111

我有一个 HTML 输入,值中有一个链接。

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

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

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

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

4

8 回答 8

206

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

演示

于 2012-08-08T21:54:02.087 回答
15

更改 value 属性不会更改defaultValue. 在代码中(使用.html()or检索innerHTML), value 属性将包含defaultValue,而不是 value 属性。

于 2012-08-08T21:53:53.617 回答
8

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

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

关于 val()

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

于 2017-03-19T11:36:03.403 回答
3
$('#link').prop('value', 'new value');

说明: Attr 将在 jQuery 1.6 上工作,但从 jQuery 1.6.1 开始,情况发生了变化。在大多数情况下, prop() 执行 attr() 过去所做的事情。在您的代码中用 prop() 替换对 attr() 的调用通常会起作用。Attr 将为您提供元素的值,因为它在页面加载时在 html 中定义,prop 提供通过 jQuery 修改的元素的更新值。

于 2020-08-25T21:20:30.340 回答
2

这只是发生在我身上的一种可能的情况。好吧,如果它对某人有帮助,那就太好了:我编写了一个复杂的应用程序,在代码的某处,我使用了一个函数来清除所有文本框的值,然后再显示它们。一段时间后,我尝试使用 jquery val('value') 设置文本框值,但我没有注意到在那之后我调用了 ClearAllInputs 方法。所以,这也可能发生。

于 2016-12-19T13:53:03.243 回答
0

我的类似问题是由选择器中的特殊字符(例如句点)引起的。

解决方法是转义特殊字符:

$("#dots\\.er\\.bad").val("mmmk");
于 2018-02-01T19:58:43.683 回答
-1

对我来说,问题是更改此字段的值不起作用:

$('#cardNumber').val(maskNumber);

上面的解决方案都不适合我,所以我进一步调查并发现:

根据 DOM Level 2 事件规范: change 事件发生在控件失去输入焦点并且在获得焦点后其值已被修改时。这意味着更改事件旨在通过用户交互触发更改。程序化更改不会导致触发此事件。

解决方案是添加触发功能并使其触发更改事件,如下所示:

$('#cardNumber').val(maskNumber).trigger('change');
于 2020-04-14T09:52:42.303 回答
-2
<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'>
于 2014-02-27T07:45:55.417 回答