我在完成网站后遇到了这个问题,因为我必须在基于ajax的页面中实现历史记录(这需要使用html更新某些地方(包括带有简单文本的表单输入 - 那就是问题 - 他们没有分配他们的值,因为他们的值由val()而不是attr() - 谎言))。我注定要从
中替换所有的javascript$('#xxx').val('someValue');
到
$('#xxx').attr('value', 'someValue');
还是有希望绕过这个?
一个非常简单的例子here。正如您在对话框中看到的,属性值未在html代码中设置。
答案 0 :(得分:15)
它使用基础本地element.value = 'someValue'
,当然设置元素的值属性
element.property_to_set = 'new_value';
所以它不会改变属性,即
element.setAttribute('value', 'someValue')
这是attr()
在内部执行的操作,而prop()
更改了属性,就像val()
一样。
它更改属性的原因是属性是表单提交中使用的属性,它通常用于在javascript中返回值,因此坚持属性而不是属性是有意义的,因为该属性通常仅用于设置属性的初始值,稍后使用javascript更改属性不会更新属性,这将是您所拥有的属性的相反问题,并且它将影响所有表单提交并成为一个主要问题。