我有一个HTML输入,其中包含值中的链接。
<input type = 'text' value = 'http://www.link.com' id = 'link' />
我正在使用jQuery来更改某个事件的值。
$('#link').val('new value');
上面的代码更改了文本框的值,但没有更改代码中的值(value ='http://www.link.com'保持不变)。我还需要改变值=''。
答案 0 :(得分:133)
请改用attr
$('#link').attr('value', 'new value');
答案 1 :(得分:11)
更改value属性不会更改defaultValue
。在代码中(使用.html()
或innerHTML
检索),value属性将包含defaultValue
,而不是value属性。
答案 2 :(得分:7)
对里卡多的回答进行了扩展:https://stackoverflow.com/a/11873775/7672426
http://api.jquery.com/val/#val2
关于val()
使用此方法设置值(或使用本机值属性)不会导致更改事件的分派。因此,不会执行相关的事件处理程序。如果要执行它们,则应在设置值后调用.trigger(“更改”)。
答案 3 :(得分:2)
这只是发生在我身上的一种可能情况。好吧,如果它有助于某人那么好:我写了一个复杂的应用程序,在代码的某处,我使用了一个函数来清除所有文本框值,然后再显示它们。一段时间后,我尝试使用jquery val(&#39; value&#39;)设置文本框值,但我确实注意到之后我调用了ClearAllInputs方法..所以,这也可能发生。
答案 4 :(得分:2)
const leastCommonMultiple = (a, b) => (a * b) / greatestCommonDivisor(a, b);
const greatestCommonDivisor = (a, b) => {
const remainder = a % b;
if (remainder === 0) return b;
return greatestCommonDivisor(b, remainder);
};
说明: Attr可以在jQuery 1.6上运行,但是从jQuery 1.6.1开始,情况已经改变。在大多数情况下,prop()会执行attr()过去的工作。通常,可以在代码中用prop()替换对attr()的调用。 Attr将为您提供在页面加载时html中定义的element的值,而prop提供通过jQuery修改的element的更新值。
答案 5 :(得分:1)
我的类似问题是由选择器中包含特殊字符(例如句点)引起的。
修复是为了逃避特殊字符:
$("#dots\\.er\\.bad").val("mmmk");
答案 6 :(得分:0)
<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'>
答案 7 :(得分:0)
就我而言,我不得不将我的jquery放在ready
函数中
$( document ).ready(function() {
$('#inputID').val('myValue');
}
答案 8 :(得分:-1)
对我来说,问题是更改此字段的值无效:
$('#cardNumber').val(maskNumber);
以上解决方案均不适合我,因此我进一步调查并发现:
根据DOM 2级事件规范: 当控件失去输入焦点并且自获得焦点以来其值已被修改时,将发生更改事件。 这意味着更改事件旨在通过用户交互触发更改。程序上的更改不会导致触发此事件。
解决方案是添加触发功能,并使其触发更改事件,如下所示:
$('#cardNumber').val(maskNumber).trigger('change');