我有一个HTML输入框,其中value值包含一个链接。
<input type = 'text' value = 'http://www.link.com' id = 'link' />
我正在使用jQuery在特定事件上更改值。
$('#link').val('new value');
以上代码改变了文本框的值,但并不改变代码中的值(value = 'http://www.link.com'保持不变)。我还需要将value=''的值也进行更改。
我有一个HTML输入框,其中value值包含一个链接。
<input type = 'text' value = 'http://www.link.com' id = 'link' />
我正在使用jQuery在特定事件上更改值。
$('#link').val('new value');
以上代码改变了文本框的值,但并不改变代码中的值(value = 'http://www.link.com'保持不变)。我还需要将value=''的值也进行更改。
使用attr
代替。
$('#link').attr('value', 'new value');
setAttribute
或jQuery的attr
是完全正确的,这将影响DOM元素的值:http://jsfiddle.net/a8SxF/1/。 - TheZ.html()
жқҘиҺ·еҸ–HTMLж—¶пјҢж— и®әдҪ дҪҝз”Ё.val('new value')
иҝҳжҳҜattr('value', 'new value')
жқҘдҝ®ж”№еҖјпјҢеҺҹжқҘзҡ„ж—§еҖјд»Қ然еӯҳеңЁ... :( - Legionar改变值属性不会改变defaultValue
。在使用.html()
或innerHTML
检索的代码中,value属性将包含defaultValue
,而不是value属性。
$('#link').prop('value', 'new value');
对我来说,问题在于更改此字段的值无效:
$('#cardNumber').val(maskNumber);
以上解决方案都没有对我起作用,所以我进一步调查发现:
根据DOM Level 2 Event规范: 当控件失去输入焦点并且其值自获取焦点以来已被修改时,将触发更改事件。 这意味着更改事件旨在由用户交互触发。编程更改不会导致此事件被触发。
解决方案是添加触发器函数,并使其触发更改事件,如下所示:
$('#cardNumber').val(maskNumber).trigger('change');
这只是我遇到的一种可能情况。如果能帮助到别人就太好了:我写了一个复杂的应用程序,其中在代码的某个地方我使用了一个函数来清除所有文本框的值,然后再显示它们。后来有一次,我试图使用jquery val('value') 来设置文本框的值,但我没有注意到紧接着我调用了ClearAllInputs方法.. 所以,这也有可能发生。
我遇到的类似问题是由于选择器中有特殊字符(例如句点)。
解决方法是转义这些特殊字符:
$("#dots\\.er\\.bad").val("mmmk");
input
的 HTML 标签元素中 value
属性的初始值input
的 DOM 节点对象的 defaultValue
属性$(input).attr("value", "42")
input
的 HTML 标签元素中 value
属性的当前值input
的 DOM 节点对象的 value
属性$(input).val("42")
$(input).prop("value", "42")
另请参阅:HTML中属性和特性的区别是什么?
<script src="//code.jquery.com/jquery.min.js"></script>
<script>
function changes() {
$('#link').val('new value');
}
</script>
<button onclick="changes()">a</button>
<input type='text' value='http://www.link.com' id='link'>