我还是jQuery的新手,并尝试在一个页面上设置三个单独表单的验证。表单非常简单,第一个只是文本输入和提交,第二个只是单个选择元素并提交。我希望每个提交都被禁用,直到其相应的元素具有内容。
到目前为止我所管理的是禁用所有提交,直到所有元素都有内容。
我需要做的是重写所以每个表格都是特定的。
答案 0 :(得分:1)
我不确定你想要什么,让我们想要实现以下内容:
$('form').each(function(){
$(this).submit();
})
更新:
对不起,我没有看到你的修改,我已经想到了类似下面的内容,我认为可以通过一些提示为你编写更好的代码。
$("input[type=text], select").keyup(function(){
if($(this).val() != ''){
$(this).next().attr("disabled", false);
}else{
$(this).next().attr("disabled", true);
}
}).change(function(){
if($(this).val() != ''){
$(this).next().attr("disabled", false);
}else{
$(this).next().attr("disabled", true);
}
});
这对你更有意义吗?
更新2:
基于@Jon评论这里是一个更好的OP问题函数,因为没有人能够回答为什么不帮助其他人处理相同的情况:
var submits = $("form .submit");
function containBlanks (elem) {
return $(elem).siblings(".required").val() === "";
}
function requiredFilledIn(elems){
elems.each(function() {
if (containBlanks(this)) {
$(this).attr("disabled", "disabled");
} else {
$(this).removeAttr("disabled");
}
});
}
requiredFilledIn(submits);
$("form span").hide();
$("input[type=text], select").focus(function(){
$(this).next().next().fadeIn("slow");
}).blur(function(){
$(this).next().next().fadeOut("slow");
}).keyup(function(){
requiredFilledIn($(this).siblings("input[type=submit]"));
}).change(function(){
requiredFilledIn($(this).siblings("input[type=submit]"));
});
@Jon
的信用