好的,我的确认上面有这个:
var error = true;
在此之下我所有的验证都会发生,例如:
/* FIRST NAME VALIDATION */
$("#firstname").change(function () {
var firstname = $('#firstname').val();
if (firstname == ""){
$('#firstname').css({"border-color":"#3399ff"});
$('#firstname-err').html("You must enter your first name.").removeClass("success_msg").addClass("error_msg");
error = true;
}else{
$('#firstname-err').html("Thank you " + firstname + ", thats perfect!").removeClass("error_msg").addClass("success_msg");;
$('#firstname').css({"border-color":"#1f6d21"});
error = false;
}
});
我在验证的底部有这个
if(error == true)
{
$('#btn-join').css({"opacity":"0.4"});
$('#btn-join').attr("disabled", true);
}
else
{
$('#btn-join').css({"opacity":"1"});
$('#btn-join').attr("disabled", false);
}
基本上,我希望它贯穿每一个,如果它们都是假的,那么提交按钮就会启用。
我该怎么做?
我是jQuery的新手,如果我没有意义,那就很抱歉。
答案 0 :(得分:1)
要获得JavaScript或jQuery的全局变量,你需要做的就是在最广泛的范围内声明它,然后再次引用它(没有var关键字)。我通常在jQuery ready()函数之前声明这些变量。这应该允许您在脚本中访问整个文档中的变量。只要确保你没有用var重新声明变量,否则你将获得它的本地化版本。
关于你的逻辑的一个注释 - 我假设你正在验证多个字段。由于这些字段中的任何一个都可能将error
变量设置为true,因此您希望避免在单个验证测试中将其设置为false。这就是我要做的事情:
error
变量。error
初始化为false。error
设置为true。如果测试通过,
请勿更改error
。error
的值以查看是否全部
测试通过或如果您有错误。采取相应的行动。我希望有所帮助。
答案 1 :(得分:0)
将更改事件绑定到表单,然后所有表单字段都会触发它。在该功能中验证所有数据。
这样,只要表格中的任何值发生变化,按钮就会以正确的状态更新。
答案 2 :(得分:0)
我不确定你的问题在这里,或者你在问什么。
就变量的范围而言,只要在代码块之前声明它,那么它应该在你的jquery代码的范围内。
我可以预见你的方法有些问题。
我最初会设置var error = false;
。您在开始之前没有任何错误。
然后您无需在代码中的任何位置设置error = false;
。如果你这样做,那么在你在脚本之前将它改为true
的任何时候都要否定。
让我们说你之后验证名字然后是第二名。
名字有错误,因此您设置了error = true
。
第二个名称没有错误,因此您设置error = false
。这将使您感到困惑,因为您忘记了名字出错。
最后,更好的方法是设置var error = '';
。然后当你做:error += 'You need to fill in your first name.<br />';
或类似的。这样,当你走到尽头而不是看到error === true
时,你可以看到error != ''
。如果计算结果为true,那么您可以输出将包含在错误变量中的错误,该错误将是您在整个脚本运行过程中遇到的所有错误的合并。
希望这有帮助。