Ввод html отображает другой текст в значение, которое он публикует
Я чувствую себя действительно глупо и не уверен, что делаю что-то действительно тупое, что... поэтому извините меня заранее.
У меня есть следующий HTML:
<input type="text" value="0" name="pcscubes" id="pcscubes">
У меня есть следующий синтаксис jquery:
var cubes=123.2;
$("#pcscubes1").val(cubes);
var test=$("#pcscubes1").val();
alert(test);
Когда выполняется jquery, поле ввода отобразит 123.2, а оповещение будет 123.2.
если вы проверяете объект html, но значение равно 0?
поэтому отображение ввода отличается от фактического значения. поэтому, когда я отправляю эту форму, он отправляет 0, а не 123.2.
Теперь я создал целое веб-приложение с этим синтаксисом и отлично работает. сегодня он просто перестает работать? Я перезапустил браузер, проверил старый код, который работал, вышел из системы и продолжал, но все равно он делает то же самое.
веб-приложение, очевидно, загрузило jquery и jquery ui в этой форме.
с использованием codeigniter?
любые идеи, поскольку я топчусь над чем-то таким глупым....
Из интереса я создал следующую скрипку, и она делает то же самое?
http://jsfiddle.net/49nqU/
![enter image description here]()
почему значение 0, когда оно показывает 123.2?
Спасибо, как всегда,
Ответы
Ответ 1
Это случай атрибутов и свойств.
То, что вы видите в инспекторе, - это атрибут value
, который не обновляется при программном обновлении свойства value
поля .
Не обращайте внимания на то, что говорит инспектор DOM; он будет показывать только то значение, которое было при загрузке страницы (если вы явно не изменяете атрибут значения поля, а не как свойство jQuery val()
, его свойство value
).
Дальнейшее чтение: http://jquery-howto.blogspot.co.uk/2011/06/html-difference-between-attribute-and.html
Некоторые атрибуты тесно связаны с их собственными коллегами. То есть, обновление свойства также обновляет атрибут. Это относится, например, к атрибуту class
и его className
свойств className
. value
, однако, различна; обновление свойства не обновляет атрибут (но, чтобы просто путать вещи, обновление атрибута обновляет свойство!)
Ответ 2
val()
изменяет свойство value, а не атрибут. Атрибут value инициализируется при загрузке страницы. После изменения текстового поля свойство и атрибут value имеют значения differnet.
Но вы также можете использовать простой JS для изменения атрибута value.
Try:
var cubes=123.2;
document.getElementById('qty').setAttribute('value',cubes);
var test=$("#qty").val();
alert(test);
DEMO