如何使用jQuery识别空文本框?如果可能的话,我想用选择器来做。另外,我必须选择id,因为在实际代码中,我不想选择所有的文本输入。
在我下面的两个代码示例中,第一个示例准确地显示了用户在文本框"txt2“中键入的值。第二个示例标识有一个空的textbox,但是如果您填充它,它仍然认为它是空的。为什么会这样呢?
仅仅使用选择器就可以做到这一点吗?
下面的代码报告文本框“txt2”中的值:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('#cmdSubmit').click(function() {
alert($('[id=txt2]').val());
});
});
</script>
</head>
<body>
<form>
<input type="text" name="txt1" id="txt1" value="123" /><br />
<input type="text" name="txt2" id="txt2" value="" /><br />
<input type="text" name="txt3" id="txt3" value="abc" /><br />
<input type="submit" name="cmdSubmit" id='cmdSubmit' value="Send" /><br />
</form>
</body>
</html>
此代码始终将文本框"txt2“报告为空:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('#cmdSubmit').click(function() {
if($('[id^=txt][value=""]').length > 0) {
if (!confirm("Are you sure you want to submit empty fields?")) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
}
});
});
</script>
</head>
<body>
<form>
<input type="text" name="txt1" id="txt1" value="123" /><br />
<input type="text" name="txt2" id="txt2" value="" /><br />
<input type="text" name="txt3" id="txt3" value="abc" /><br />
<input type="submit" name="cmdSubmit" id='cmdSubmit' value="Send" /><br />
</form>
</body>
</html>
发布于 2009-08-19 12:09:04
您也可以通过定义自己的选择器来完成此操作:
$.extend($.expr[':'],{
textboxEmpty: function(el){
return $(el).val() === "";
}
});
然后像这样访问它们:
alert($(':text:textboxEmpty').length); //alerts the number of text boxes in your selection
发布于 2011-12-02 10:41:17
正如在排名靠前的帖子中所提到的,以下代码适用于Sizzle引擎。
$('input:text[value=""]');
在注释中,注意到删除选择器的:text
部分会导致选择器失败。我相信Sizzle实际上在可能的情况下依赖于浏览器的内置选择引擎。当:text
被添加到选择器中时,它就变成了一个非标准的CSS选择器,因此必须由Sizzle本身来处理。这意味着Sizzle检查输入的当前值,而不是在源HTML中指定的" value“属性。
因此,这是一种检查空文本域的聪明方法,但我认为它依赖于特定于Sizzle引擎的行为(使用输入的当前值而不是源代码中定义的属性)。虽然Sizzle可能会返回与此选择器匹配的元素,但document.querySelectorAll
将只返回在HTML中具有value=""
的元素。买者自负。
发布于 2012-06-29 23:25:43
https://stackoverflow.com/questions/1299424
复制相似问题