使用jQuery删除输入框的值

22
我需要使用jQuery从一个隐藏的文本输入框中删除一些值,但是不知道为什么这样做不起作用。
例如:
<input type="hidden" value="abc" name="ht1" id="ht1" />
<input type="text" name="t1" id="t1" />

我使用以下 jQuery 代码来移除带有 onclick 事件的值

$('#rt1').click(function() {
    $('#t1').val();  
    $('#ht1').val();  
});

我能用jQuery清空输入框的内容并清除隐藏字段的值吗?

6个回答

43
你应该这样做:
$('#rt1').click(function() {
    $('#t1').val('');  
    $('#ht1').val('');  
});

也就是说,传递一个空字符串。或者使用removeAttr (query.removeAttr('value'))。


4
+1,我赞同。我会说removeAttr()是这样做的首选方法。 - karim79
请注意,使用.val('')不会删除属性,因此如果您的依赖项检查属性的存在性(而不是值),则确实需要运行removeAttr。(在我的代码中,我对两者都有依赖关系,因此我甚至必须运行query.val('').change().removeAttr('value'))。 - JHBonarius

28
$('#rt1').click(function() {
    $('#t1').attr('value', '');  
    $('#ht1').attr('value', '');  
});

另外,您可以缩短为$('#t1,#ht1').attr('value', ''); - Vetal4eg

8

简化版

$('#rt1').click(function() {
    $('#t1, #ht1').val('');  
});

4

你只需要在val()函数中传递一个空字符串,或者可以使用更通用的attr()函数将给定属性设置为给定值:

$('#rt1').click(function() {
    $('#t1').attr("value", "");  
    $('#ht1').attr("value", "");  
});

这应该是可以工作的,但在我的情况下我不知道为什么它不起作用,所以我使用了$('#t1').val()。对我来说它很好用。我不知道为什么在我的情况下.attr不起作用。如果有人能解释一下这个问题,那对我们来说就很好了。 - asifaftab87

2
$(document).ready(function(){ 

  $('input').click(function(){ 

    $(this).removeAttr('value');

  });
});

//remove value when click

//without effect input type  submit 
$(document).ready(function(){ 

  $('input:not(:submit)').click(function(){ 

    $(this).removeAttr('value');
  });
});

2

这应该是:

$('#rt1').click(function() {
    $('#t1').val('');  
    $('#ht1').val('');  
});

当val()函数没有参数时,它将作为getter而不是setter。

$('#t1').attr("value", ""); 这为什么对我不起作用,你的代码在同一个地方是有效的。你能解释一下吗? - asifaftab87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接