jquery全局变量?如何做到这一点?
好的,我有一个以上的验证:jquery全局变量?如何做到这一点?,jquery,Jquery,好的,我有一个以上的验证: var error = true; 下面是我的所有验证,例如: /* FIRST NAME VALIDATION */ $("#firstname").change(function () { var firstname = $('#firstname').val(); if (firstname == ""){ $('#firstname').css({"border-color":"#3399ff"}); $('#
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);
}
基本上,我希望它在每一个页面上运行,如果它们都为false,那么提交按钮将被启用
我该怎么做呢
我是jQuery的新手,如果我没有理解的话,很抱歉。要在JavaScript或jQuery中获得全局变量,您需要做的就是在最广泛的范围内声明它,然后再次引用它(不带var关键字)。我通常在jQuery ready()函数之前声明这些变量。这样,您就可以在脚本的整个文档中访问变量。只需确保不使用var重新声明变量,否则会得到它的本地化版本 关于您的逻辑,我假设您正在验证多个字段。由于这些字段中的任何一个都可能将
error
变量设置为true,因此您需要避免在单个验证测试中将其设置为false。下面是我要做的:
- 在jQuery代码之外声明
变量错误
- 当验证函数启动时,将
初始化为falseerror
- 运行每个字段的验证测试。如果测试失败,请标记它
为用户直观显示,并将
设置为true。如果测试通过, 不要更改error
的值error
- 对每个字段的测试重复上述步骤
- 所有测试完成后,测试
的值,查看是否所有 测试通过,或者如果您有错误。据此行动error
我希望这会有所帮助。将更改事件绑定到表单,然后所有表单字段都将触发它。在该函数中,验证所有数据
这样,每当表单中的任何值发生更改时,按钮都会更新为正确的状态。我不确定您的问题是什么,或者您在问什么 就变量的作用域而言,只要在代码块之前声明它,那么它就应该在jquery代码的作用域中 不过我可以预见你的方法会有一些问题 我最初会设置
var error=false代码>。在开始之前,您没有任何错误
然后您不需要设置error=false代码>代码中的任意位置。如果执行此操作,则在脚本中将其更改为true
之前的任何时间都是否定的
假设您先验证第一个名称,然后验证第二个名称
名字有一个错误,所以您可以设置error=true
第二个名称没有错误,因此您设置了error=false
。这将使您感到困惑,因为您忘记了名字有错误
最后一个更好的方法是设置var error=''代码>。然后,在执行以下操作时:error+=“您需要填写您的名字。
”代码>或类似。这样,当您到达末尾时,而不是查看error===true
时,您可以查看error!=''代码>。如果计算结果为true,则可以输出错误,该错误将包含在error变量中,该变量将合并在脚本运行过程中遇到的所有错误
希望这能有所帮助。此外:虽然这不是很好,但您也可以通过不使用var
关键字来确保您的变量将被全局声明。这将自动在全局范围内声明该变量。你是说它不工作吗?(顺便说一句,如果(错误)
,您可能还想看看其他一些指定CSS的方法(比如类),或者只使用jQuery验证插件。但是,在每次成功输入后,按钮是否会闪烁?这意味着有人可以很容易地填写一个输入框,然后提交表单?你是正确的,消息在第一次输入后会闪烁,但是,如果没有按钮或其他东西触发对从未聚焦或更改的输入项的验证,你将如何验证消息是否全部填写?这是给你的一本JSFIDLE。我不认为这是一个问题-表单只有在整个内容有效的情况下才能提交。按钮本身不会闪烁,它会保持关闭状态。嗨,BNL,这似乎可行,但如果验证(例如,如果firstname在firstname更改函数中)则不起作用-如果每个输入验证都在更改函数中,如何使其工作?我在顶部将错误设置为true的原因是,页面加载时禁用了提交按钮。让我试试你的建议。我明白了。。。如果每次都要从偏移量禁用按钮,那么不能在HTML中将其设置为禁用吗?