LINUX.ORG.RU

Не могу прочитать актуальное значение текстового поля в jQuery

 ,


0

1

Есть текстовое поле:

<input id="itemDescript" name="itemDescript" type="text" value="This is value" class="form-control">


Я пытаюсь прочитать его значение (атрибут value) после редактирования и после ухода курсора из этого поля:

$('#itemDescript').bind('focusout',function(event) {
    
    var value=$('#itemDescript').attr('value');
    
    window.alert('Send value '+value);
}


Но в результате получаю неизмененное значение:

Send value This is value


Вопрос: а как через jQuery и биндинг получить новое значение?

★★★★★
Ответ на: комментарий от deep-purple

Ничего не понял. Мне нужно обязательно обрабатывать событие focusout, я в нем буду AJAX отправлять.

И вот в этом событии я не могу прочитать актуальное значение текстового поля.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Твое событие это не онфокус а онблюр. Вместо алерта дергай саой аякс. Код не правильный, пишу с тлф, так еще и пьян. За подробностями в гугл.

deep-purple ★★★★★
()
Ответ на: комментарий от bvn13

$(…).val() всегда было

Ага, вот так сработало:

var value=$(this).val();


Но все же хотелось понять, почему просто обращение к значению атрибута value возвращает старое значение. В документации по вашей ссылке про это ни слова.

Ведь value - это полноправный атрибут DOM-дерева, почему обращение к нему возвращает изначальное состояние DOM-дерева вместо измененного?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Ага, вот в чем дело. Оказывается в модели DOM есть свойства и атрибуты, и это разные вещи:


При чтении HTML браузер генерирует DOM-модель. При этом большинство стандартных HTML-атрибутов становятся свойствами соответствующих объектов.

Например, если тег выглядит как <body id=«page»>, то у объекта будет свойство body.id = «page».

Но это преобразование – не один-в-один. Бывают ситуации, когда атрибут имеет одно значение, а свойство – другое. Бывает и так, что атрибут есть, а свойства с таким названием не создаётся.

Если коротко – HTML-атрибуты и DOM-свойства обычно, но не всегда соответствуют друг другу, нужно понимать, что такое свойство и что такое атрибут, чтобы работать с ними правильно.



Вот тут подробнее: https://learn.javascript.ru/attributes-and-custom-properties

Там и про свойство value и про атрибут value написано.

Вообще не знал про такие подводные камни.

Xintrea ★★★★★
() автор топика

Решил эту твою тетру на электрон переписать?

anonymous
()
Ответ на: комментарий от Xintrea

потому что синтаксис тега <input/> такой:

<input attr="attr-value">
   value
</input>
bvn13 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.