JQuery将文本框集合设置为空值

时间:2011-12-28 06:43:14

标签: jquery jquery-selectors input

我如何在这里清空文本框的值是在我已经解决的代码之下,但似乎没有工作

var txtName = $("input#txtName"),txtPrice = $("input#txtPrice");

第一种方法

$(txtName,txtPrice).val("");
  • 这实际上是错误的,因为价格文本框现在将成为我想要搜索的上下文。

第二种方法

$([txtName,txtPrice]).val("");
  • 我不明白为什么我应该这样做,因为他们已经是jQuery Objects(但是有效)

我将它们放在变量中,因为这些变量在脚本中进一步使用。

4 个答案:

答案 0 :(得分:11)

以下是一些方法;

txtName.add(txtPrice).val("");
// OR
$("input#txtName,input#txtPrice").val("");

(顺便说一下,$输入中有txtPrice个符号。)

第一种方法不起作用,因为它是一种使用jQuery选择器的方法。当您使用jQuery时,第一个参数将是选择器,第二个参数将是选择器工作的容器对象。基本上这几乎是这样的;

$(txtPrice).find(txtName).val("");

因为txtName中没有txtPrice,所以这两个值都不会被清空。

第二种方法有效,因为您将参数作为数组提供给jQuery选择器。它接受它并对数组的每个元素执行.val()操作。这种方式是合法的,但因为你的变量已经是jQuery对象,所以不需要使用它。

答案 1 :(得分:1)

$('input[type=text]').val('');

$('input[type=text]').each(function(){ $(this).val(''); });

答案 2 :(得分:1)

在这里给出你的变量:

var txtName = $("input#txtName"),txtPrice = $("input#txtPrice");

您可以直接访问jQuery方法,如下所示:

txtName.val("");
txtPrice.val("");

因为它们已经 jQuery对象。没有必要再次尝试将它们包装在$() jQuery函数中。

据我所知,jQuery function接受数组的唯一方法是数组元素是DOM元素,而不是jQuery对象。 (如果它适用于似乎没有在doco中覆盖的jQuery对象,当我尝试它时它对我不起作用。)因此,鉴于您知道每个jQuery对象只有一个元素(因为你在ID上选择,你可以试试这个:

$([txtName[0],txtPrice[0]]).val("");

但是,这仍然会创建一个包含两个元素的新jQuery对象,所以当你可以像我第一次提到的那样做时,它似乎有点多余。

(另请注意,在您的选择器“input #txtName”中,“input”部分是多余的,因为您随后按id选择并且id在页面上是(或应该是)唯一的。)

编辑:如果你有一个很长的变量列表并希望保存输入,那么另一种方法就是这样:

$.each([txtName,txtPrice,txtTest1,txtTest2,txtTest3],function(i,v) { v.val(""); });

答案 3 :(得分:0)

令人惊讶的是,这有效, $([txtName,txtPrice]).each(function(){this.val("")});