为什么jQuery val()函数不更新属性'value'?

时间:2013-12-07 21:34:15

标签: jquery input attr

我在完成网站后遇到了这个问题,因为我必须在基于ajax的页面中实现历史记录(这需要使用html更新某些地方(包括带有简单文本的表单输入 - 那就是问题 - 他们没有分配他们的值,因为他们的值由val()而不是attr() - 谎言))。我注定要从

中替换所有的javascript
$('#xxx').val('someValue');

$('#xxx').attr('value', 'someValue');

还是有希望绕过这个?

一个非常简单的例子here。正如您在对话框中看到的,属性未在html代码中设置。

1 个答案:

答案 0 :(得分:15)

它使用基础本地element.value = 'someValue',当然设置元素的值属性

element.property_to_set = 'new_value';

所以它不会改变属性,即

element.setAttribute('value', 'someValue')

这是attr()在内部执行的操作,而prop()更改了属性,就像val()一样。
它更改属性的原因是属性是表单提交中使用的属性,它通常用于在javascript中返回值,因此坚持属性而不是属性是有意义的,因为该属性通常仅用于设置属性的初始值,稍后使用javascript更改属性不会更新属性,这将是您所拥有的属性的相反问题,并且它将影响所有表单提交并成为一个主要问题。