#jquery
#jquery
Вопрос:
С помощью моего кода я очищаю данные текстового поля на основе условия и пытаюсь восстановить фокус. Размер HTML-кода очень большой, поэтому я здесь не публикую, я сделал скрипку.
Мой код объясняется комментариями в этом скрипте. Восстановление текста в фокусе возвращает мне нулевое значение.
Но здесь это работает нормально
Комментарии:
1. не используйте live в 1.7, это может быть проблемой
2. ` // Всякий раз, когда в текстовом поле происходило событие ввода, если длина значения больше ближайшего флажка / переключателя `???
3. @RoyiNamir Да.. В родительском <tr> текстового поля будет один переключатель .. Вы можете найти в HTML, приведенном в fiddle.
4. Вам действительно нужно кэшировать объект jquery
$(this);
, сделавvar $this = $(this);
Ответ №1:
Некоторые недостатки в вашем коде:
</input>
не следует использовать. Вместо этого используйте самозакрывающиеся теги<input ... />
parents()
должно бытьclosest()
. Возможно, чтоparents()
выберите несколько элементов-
Удалите
.not(this)
и добавьте следующее:if (this == _this) { tt.data('text',tt.val()); } else { tt.val(''); }
-
Замените функцию на
blur()
на:if(ss.val(ss.data('text')).val().length > 0) ss.closest('tr').find('.humble').prop('checked', true)
Ответ №2:
Проблема:
после каждого (!) нажатия клавиши или события изменения в одном поле ввода текста вы сохраняете значения всех других полей ввода текста, но после первого раза поля ввода пусты, и сохраненное значение будет перезаписано текущим значением (пустой строкой).
Например.: перезаписать только сохраненное значение, если строка не пуста?
Также смотрите обновленный jsfiddle.