我在完成网站后遇到了这个问题,因为我必须在基于ajax的页面中实现历史记录(这需要使用html更新某些位置(其中包括带有简单文本输入的表单)-这就是问题所在 - 他们没有分配自己的值,因为他们的值是由 val() 设置的,而不是 attr() - 谎言))。我注定要替换所有 javascript 吗
$('#xxx').val('someValue');
至
$('#xxx').attr('value', 'someValue');
或者有希望绕过这个吗?
一个非常简单的例子 here 。正如您在对话框中看到的,属性 value 未在 html 代码中设置。
最佳答案
它使用底层的 native element.value = 'someValue'
,当然可以设置元素的属性值
element.property_to_set = 'new_value';
所以它不会改变属性,那就是
element.setAttribute('value', 'someValue')
这是 attr()
内部执行的操作,而 prop()
会更改属性,就像 val()
一样。
它更改属性的原因是,属性是表单提交中使用的属性,并且通常也用于在 javascript 中获取值,因此坚持使用属性而不是属性是有意义的,因为该属性通常仅用于设置属性的初始值,稍后使用 javascript 更改该属性不会更新该属性,这将与您遇到的问题相反,并且会影响所有表单提交并成为一个主要问题。
关于jquery - 为什么 jQuery val() 函数不更新属性 'value' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20446948/