我试图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)
双方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()属性映射到属性,因此上述内容不适用于这些浏览器.
使用.val().
input.val("some text");
Run Code Online (Sandbox Code Playgroud)
根据您的评论,view source很可能不会更新。如果您仍然获得原始值,则必须进行其他操作,并且很可能需要更多详细信息。
jsfiddle善良。