Показать сообщение отдельно
  #4 (permalink)  
Старый 15.03.2014, 16:15
Аспирант
Отправить личное сообщение для NeoN Посмотреть профиль Найти все сообщения от NeoN
 
Регистрация: 01.03.2013
Сообщений: 77

или так... наверное, еще лучше)

jQuery('#1:not(.disabled)').bind('textchange', function (event, previousText) {
    if (jQuery(this).hasClass("disabled") == false) {
    if (jQuery(this).val().length > 0) {
          jQuery('#2').addClass('disabled').attr("readonly","readonly");
    }
    else   jQuery('#2').removeClass('disabled').removeAttr("readonly", "readonly" );
  jQuery('#2').val(jQuery(this).val());
    }
});


jQuery('#2').on('textchange',':not(.disabled)', function (event, previousText) {
	alert ('Hello');    
});



думаю, в случае с bind, функция-обработчик прикрепляется к текущему выбранному элементу сразу при запуске скрипта. в данном случае этот элемент является вторым полем. и даже в случае изменения второго поля через скрипт, обработчик остается висеть и ожидать изменения текста, хотя ввод в само поле уже запрещен. поэтому и функция, дождавшись своего часа, выполняется при нужном событии. и только потом обработчик перезаписывается к этому элементу

при использовании on() функция прикрепляется к элементу только после срабатывания нужного события.

вывод: использование on() предпочтительней в данном случае. но нужен jquery версии не ниже 1.7

Последний раз редактировалось NeoN, 15.03.2014 в 16:24.
Ответить с цитированием