jQuery .val更改不会更改输入值

时间:2012-08-08 21:50:21

标签: javascript jquery

我有一个HTML输入,其中包含值中的链接。

<input type = 'text' value = 'http://www.link.com' id = 'link' />

我正在使用jQuery来更改某个事件的值。

$('#link').val('new value');

上面的代码更改了文本框的值,但没有更改代码中的值(value ='http://www.link.com'保持不变)。我还需要改变值=''。

9 个答案:

答案 0 :(得分:133)

请改用attr $('#link').attr('value', 'new value');

demo

答案 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');