Ввод 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