我有一个关于使用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>
问题是选择器仅为第一个文本框激活。如果在第一个文本框中输入值,则不会激活触发器。既不:文字或:输入正常工作。
有没有人有任何想法?
提前, denisr
答案 0 :(得分:4)
匹配多个元素的jQuery选择器上的val()
函数返回匹配的第一个元素的值。您需要循环遍历所有元素并检查每个元素的值。
$(document).ready(function(){
$("form").submit(function(){
var inputsHaveValues = true;
$(':text').each( function() {
if (!$(this).val()) {
inputsHaveValues = false;
break;
}
});
if (!inputsHaveValues) {
$("span").text("sdfgsd").show();
return false;
}
})
});
答案 1 :(得分:3)
val
是破坏性方法(你不能链接到它),所以当应用于包含许多元素的对象时,必须返回一个值,它就是会为第一个做。
您应该查看each
方法来遍历所有文本字段。
$('input:text').each(function(index, elm) {
if(!$(this).val()){
$("span").text("sdfgsd").show();
};
});
您可以使用索引标识要在其中显示错误消息的特定span
。
答案 2 :(得分:2)
我建议你做那样的事情:
<html>
<head>
<script type="text/javascript">
$(document).ready(function() {
$("#ff").submit(function(e) {
$('.text-input').each(function() {
if ($(this).val() == '') {
$("#msg").text("sdfgsd");
e.preventDefault();
return false;
}
});
});
});
</script>
</head>
<body>
<form method="post" action="" id="ff">
<span id="msg"></span>
<input type="text" class="text-input" name="test" /> <br />
<input type="text" class="text-input" name="test3" /> <br />
<input type="checkbox" name="test2" /> <br />
<input type="submit" value="push it" />
</form>
</body>
</html>
id
或class
属性来访问元素,因为它更高效,更不容易出错e.preventDefault()
阻止提交表单return false;
立即退出each
循环答案 3 :(得分:0)
尝试定义应用于每个文本的类,定义表单ID或使用每个jquery。另外,检查javascript错误。
答案 4 :(得分:0)
$(document).ready(function(){
$("#ff").submit(function(event){
$('input[type="text"]').each(function () {
if(!$(this).val()){
$("span").text("Foobar");
}
});
event.preventDefault();
})
});
event.preventDefault();
它很多
优于return false;
。$(#ff)
- 即时
仅$('form')
。input[type="text"]
:text
即时