jQuery 选择器仅选择第一个元素
我有一个关于使用 jquery 的小问题。 我有以下代码:
<html>
<head>
<script src="jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("form").submit(function(){
if(!$(':text').val()){
$("span").text("sdfgsd").show();
};return false;
})
});
</script>
</head>
<body>
<form action="" id="ff" >
<span></span>
<input type="text" name="test" /> <br />
<input type="text" name="test3" /> <br />
<input type="checkbox" name="test2" /> <br />
<input type="submit" value="push it" />
</form>
</body>
问题是选择器仅针对第一个文本框激活。如果您在第一个文本框中输入值,则不会激活触发器。 :text 或 :input 都无法正常工作。
有人有什么想法吗?
提前致谢, 丹尼斯尔
I have a small question about using jquery.
I have the following code:
<html>
<head>
<script src="jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("form").submit(function(){
if(!$(':text').val()){
$("span").text("sdfgsd").show();
};return false;
})
});
</script>
</head>
<body>
<form action="" id="ff" >
<span></span>
<input type="text" name="test" /> <br />
<input type="text" name="test3" /> <br />
<input type="checkbox" name="test2" /> <br />
<input type="submit" value="push it" />
</form>
</body>
the problem is that the selector is only activated for the first textbox. if you enter a value in the first textbox the trigger is not activated. neither :text or :input work properly.
does anyone have any ideas??
thanx in advance,
denisr
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
匹配多个元素的 jQuery 选择器上的
val()
函数返回第一个匹配元素的值。您需要循环遍历所有元素并检查每个元素的值。The
val()
function on a jQuery selector matching more than one element returns the value of the first element matched. You need to loop over all the elements and check the value of each one.val
是一种破坏性方法(您无法链接到它),因此当应用于其中包含许多元素的对象时,必须返回一个值,该值会做第一。您应该查看
each
方法来迭代所有文本字段。您可以使用索引来标识要在其中显示错误消息的特定
span
。val
is a destructive method (you can't chain on to it) and so when applied to an object with many elements in it, has to return a value, which it will do for the first.You should look at the
each
method to iterate through all your text fields.You could use the index to identify a particular
span
in which to show the error message.我建议您这样做:
id
或class
属性来访问元素,因为它更高效且不易e.preventDefault()
阻止提交表单return false;
立即退出each
循环I'd suggest you to do something like that:
id
orclass
attributes to access elements because it's more efficient and less prone to errorse.preventDefault()
to prevent from submitting the formreturn false;
to get out of theeach
loop right away尝试定义一个应用于每个文本的类,定义一个表单 id,或者分别使用 jquery。另外,检查 JavaScript 错误。
http://api.jquery.com/jQuery.each/
Try defining a class applied to each text, defining a form id, or using jquery each. Also, check for javascript errors.
http://api.jquery.com/jQuery.each/
event.preventDefault();
其多比
return false;
更好。$(#ff)
- 即时仅
$('form')
。input[type="text"]
即时:text
event.preventDefault();
its muchbetter than
return false;
.$(#ff)
- instant ofonly
$('form')
.input[type="text"]
instant of only:text