我如何在这里清空文本框的值是在我已经解决的代码之下,但似乎没有工作
var txtName = $("input#txtName"),txtPrice = $("input#txtPrice");
$(txtName,txtPrice).val("");
$([txtName,txtPrice]).val("");
我将它们放在变量中,因为这些变量在脚本中进一步使用。
答案 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("")});