jquery全局变量?这该怎么做?

时间:2011-09-23 13:48:05

标签: jquery

好的,我的确认上面有这个:

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的新手,如果我没有意义,那就很抱歉。

3 个答案:

答案 0 :(得分:1)

要获得JavaScript或jQuery的全局变量,你需要做的就是在最广泛的范围内声明它,然后再次引用它(没有var关键字)。我通常在jQuery ready()函数之前声明这些变量。这应该允许您在脚本中访问整个文档中的变量。只要确保你没有用var重新声明变量,否则你将获得它的本地化版本。

关于你的逻辑的一个注释 - 我假设你正在验证多个字段。由于这些字段中的任何一个都可能将error变量设置为true,因此您希望避免在单个验证测试中将其设置为false。这就是我要做的事情:

  • 在jQuery代码之外声明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,那么您可以输出将包含在错误变量中的错误,该错误将是您在整个脚本运行过程中遇到的所有错误的合并。

希望这有帮助。