我想如果所有输入的值都转到网址#
(<form action="#"....
),否则不要去。但在此代码中,它只适用于第一个字段,我希望它适用于所有字段。(我无法使用ajax call
或preventDefault
或window.location
(因为一个来自字段输入:文件)。如何修复它?
请参阅演示:http://jsfiddle.net/jGu4e/
<form action="abc.html" method="POST" class="submit">
<input type="text" name="name"><br>
<input type="text" name="name"><br>
<input type="text" name="name"><br>
<button id="cli">Submit</button>
</form>
$('.submit').submit(function() {
var input = $(this).closest('form').find('input[type="text"]');
if (!$(input).val()){
var cssObj={'border-radius':'5px',border:"none","box-shadow":"0 0 1px 1px red",outline:"none",background:"#ffc4c4"};
$('input[type="text"]').css(cssObj);
return false;
};
});
答案 0 :(得分:1)
你的问题真是双重的。首先,您的选择器可以/将返回多个字段。其次,当.submit
调用中的任何一个没有值时,您需要从$('.submit').submit(function() {
var input = $(this).closest('form').find('input[type="text"]');
var result = true;
input.each(function(){
if (!$(this).val()){
var cssObj={'border-radius':'5px',border:"none","box-shadow":"0 0 1px 1px red",outline:"none",background:"#ffc4c4"};
$(this).css(cssObj);
result = false;
};
});
return result;
});
调用返回false。
这个jQuery应该可以解决这个问题:
{{1}}
正如您在此处更新的jsfiddle所示:http://jsfiddle.net/T9YBu/1/
编辑:此代码中仍有缺陷。例如,如果用户没有输入值,则它变为红色。如果用户随后填写了一个值并点击了提交,则会保持红色。很容易修复,但实际上这就是应使用预先测试的验证插件的原因。