我有一个HTML输入,其值中包含一个链接。
<input type = 'text' value = 'http://www.link.com' id = 'link' />
我正在使用jQuery更改某个事件的值。
$('#link').val('new value');
上面的代码更改了文本框的值,但未更改代码中的值(value ='http://www.link.com'保持不变)。我还需要=来更改值。
我有一个HTML输入,其值中包含一个链接。
<input type = 'text' value = 'http://www.link.com' id = 'link' />
我正在使用jQuery更改某个事件的值。
$('#link').val('new value');
上面的代码更改了文本框的值,但未更改代码中的值(value ='http://www.link.com'保持不变)。我还需要=来更改值。
Answers:
使用attr
代替。
$('#link').attr('value', 'new value');
.html()
,如果使用.val('new value')
或attr('value', 'new value')
... ,则仍然会有相同的旧值,没关系::(
更改value属性不会更改defaultValue
。在代码(用.html()
或检索innerHTML
)中,value属性将包含defaultValue
,而不是value属性。
扩大里卡多的答案:https : //stackoverflow.com/a/11873775/7672426
http://api.jquery.com/val/#val2
关于val()
使用此方法(或使用本机值属性)设置值不会导致更改事件的分派。因此,将不执行相关的事件处理程序。如果要执行它们,则应在设置值后调用.trigger(“ change”)。
我的类似问题是由于选择器中包含特殊字符(例如句点)引起的。
解决方法是转义特殊字符:
$("#dots\\.er\\.bad").val("mmmk");
<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'>
对我来说,问题是更改此字段的值不起作用:
$('#cardNumber').val(maskNumber);
上面的解决方案都不适合我,因此我进一步调查发现:
根据DOM 2级事件规范:当控件失去输入焦点并且自获得焦点以来其值已被修改时,将发生更改事件。这意味着更改事件旨在通过用户交互触发更改。程序更改不会导致触发此事件。
解决方案是添加触发函数,并使其触发更改事件,如下所示:
$('#cardNumber').val(maskNumber).trigger('change');
仔细检查是否有多个具有非唯一ID的元素!这就是我的foreach循环和ID重复的情况。
in the code
?您是否正在查看页面的原始(因此,未修改的)源?