Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   вынести событие в функцию (https://javascript.ru/forum/jquery/47302-vynesti-sobytie-v-funkciyu.html)

And5 18.05.2014 08:12

вынести событие в функцию
 
всем доброго времени суток.
имеется:
<input class="os" type="text" name="ops" id="opt-qty-338" value="0" oninput="
                   $('#option-value-338').val( 338 + '|' + Number($(this).attr('value')) );
                   $('#option-value-338').attr('price', Number($(this).attr('price')) * Number($(this).attr('value')) );
                   calc_opt_313();
                " size="4" price="6.1000" style="width: 40px;" os="os1">

нужно вынести действие по событию в функцию. Делаю так:
<input class="os" type="text" name="ops" id="opt-qty-338" value="0" oninput="opt_338();"           
               size="4" price="6.1000" style="width: 40px;" os="os1">
				<script type="text/javascript">
				<!--

			function opt_338(){
					$('#option-value-338').val( 338 + '|' + Number($(this).attr('value')) );
                   $('#option-value-338').attr('price', Number($(this).attr('price')) * Number($(this).attr('value')) );
				   calc_opt_313();
        }	
				//-->
				</script>

Не работает. Не пойму отчего.

Aetae 18.05.2014 11:20

В первом случае this ссылается на текущий элемент(input), во втором на гобальный объект(window).
Решить можно например так:
oninput="opt_338.call(this);"
Почитать про this - тут.

And5 18.05.2014 15:08

да, заработало. Но вся эта процедура была затеяна с целью вызвать эту функцию с дочерней страницы
window.opener.opt_338.call(this);

там такая конструкция не работает

And5 18.05.2014 19:07

да, спасибо. разобрался


Часовой пояс GMT +3, время: 23:29.