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

Luk*_*kas 88 javascript jquery

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

<input type = 'text' value = 'http://www.link.com' id = 'link' />
Run Code Online (Sandbox Code Playgroud)

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

$('#link').val('new value');
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*ann 149

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

演示

  • 使用.val编写了大量复杂的函数(正如我之前读过的所有内容所示)并且具有完全相同的问题.血腥烦人!这个答案应该是任何希望动态更新表单元素的jQuery新手的第一个调用点.如果我先读这篇文章,本来可以节省几个小时! (6认同)
  • 这是完全正确的,通过使用`setAttribute`或jQuery的`attr`,你也会影响DOM元素的值:http://jsfiddle.net/a8SxF/1/ (5认同)
  • 但是当你想得到带有`.html()`的html时,如果你使用`.val('new value')`或`attr('value',',那么仍然会有相同的旧值,无关紧要新值')`... :( (5认同)
  • @TheZ那是因为输入的脏值标志是假的.尝试与输入交互(用户输入后值为脏),然后设置setAttribute (4认同)
  • 仍然不适合我.还有其他建议吗? (3认同)
  • 这就是为什么使用JavaScript/JQuery很难实现这一点的原因,这样的许多警告都是如此.这对我帮助很大.谢谢! (2认同)

use*_*654 11

更改value属性不会改变defaultValue.在代码中(使用.html()或检索innerHTML),value属性将包含defaultValuevalue属性.

  • 对,那是正确的。更改属性不会更改正在提交的内容。 (2认同)

小智 7

进一步扩展里卡​​多的答案:https://stackoverflow.com/a/11873775/7672426

http://api.jquery.com/val/#val2

关于val()

使用此方法设置值(或使用本机值属性)不会导致更改事件的分派.因此,不会执行相关的事件处理程序.如果要执行它们,应在设置值后调用.trigger("更改").