jQuery .attr('value','new_value')不工作?

Ben*_*enM 9 javascript jquery

我试图value使用jQuery 动态更改输入的实际HTML 属性.虽然使用input.attr('value', 'myNewVal');可以直观地更改它,但是当我使用Chrome中的开发人员工具检查源时,HTML属性没有改变.

由于我稍后会在某些PHP中检查输入是否具有其原始值,因此我需要一种更改实际HTML属性的方法,理想情况是在jQuery中.有没有其他人遇到这个烦人的bug,你们中的任何人都知道一个解决方法吗?

我也尝试过,.val()同样的事情发生了 - 底层的HTML属性没有改变.

Kob*_*obi 15

attr也应该工作,特别是因为你看到它改变了,但也尝试使用val- 它更适合改变价值观:

input.val('myNewVal');
Run Code Online (Sandbox Code Playgroud)

确保使用"查看源"命令,重新加载页面,或显示加载时的页面.相反,使用DOM查看器 - 右键单击​​输入元素并选择"Inspect element".(这与"开发工具" - 在Windows中的Chrome中Ctrl+ Shift+ 相同I)


Tim*_*own 7

双方attr()val()专门与处理value 性能 [更新2014年2月:在此之前的jQuery 1.6是真实的,但事实并非如此,因为引进的prop()1.6] ,没有属性.该value属性仅指定输入的初始值.一旦输入中的实际文本发生更改(通过用户输入或脚本),value属性和属性将完全独立运行.在几乎所有情况下,这都无所谓,因为它几乎总是您想要的当前值(并且它是提交给服务器的值).

如果你真的必须改变实际属性(我很确定你没有),可以通过setAttribute()以下方式来实现:

input[0].setAttribute('value', 'myNewVal');
Run Code Online (Sandbox Code Playgroud)

请注意,IE <8(以及IE 8中的兼容模式)已经破坏了对属性的支持,getAttribute()并将setAttribute()属性映射到属性,因此上述内容不适用于这些浏览器.

  • @Christian:对于文本输入框,您可以通过查看页面看到当前值:) (2认同)

Mar*_*man 5

使用.val().

input.val("some text");
Run Code Online (Sandbox Code Playgroud)

根据您的评论,view source很可能不会更新。如果您仍然获得原始值,则必须进行其他操作,并且很可能需要更多详细信息。

jsfiddle善良。