我感觉真的很蠢,不确定做些什么真的很蠢......所以请原谅我。
我有以下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
现在我使用这种语法构建了一个完整的Web应用程序并且运行良好。今天它停止工作?我重新启动了浏览器,检查了正在运行,注销和打开的旧代码,但它仍然是这样。
web app显然在这个表单上加载了jquery和jquery ui。
使用codeigniter?
任何想法,因为我正在敲打那些愚蠢的东西......
出于兴趣,我创造了下面的小提琴,它也在做同样的事情? http://jsfiddle.net/49nqU/
为什么在显示123.2时值为0?
一如既往地谢谢,
答案 0 :(得分:13)
这是属性与属性的情况。
您在检查器中看到的是value
属性,当您以编程方式更新字段的value
属性时,该属性不会更新。 强>
不要理会DOM检查员说的话;它只会显示加载页面时的值(除非您明确更改字段的值属性而不是jQuery&#39; s val()
它的value
属性。)
进一步阅读:http://jquery-howto.blogspot.co.uk/2011/06/html-difference-between-attribute-and.html
某些属性与其财产对应物密切相关。也就是说,更新属性也会更新属性。例如,class
属性及其className
属性对应的情况就是这种情况。然而,value
是不同的;更新属性不会更新属性(但是,为了进一步混淆,更新属性 更新属性!)
答案 1 :(得分:2)
val()
正在更改value属性,而不是属性。 value属性在页面加载时初始化。更改文本字段后,value属性和属性具有不同的值。
但您也可以使用普通JS来更改value属性。
尝试:
var cubes=123.2;
document.getElementById('qty').setAttribute('value',cubes);
var test=$("#qty").val();
alert(test);