我想将js var设置为true,但仅在登录数据正确时,如果表单有效(字段为空......)我该怎么办?我正在使用jQuery验证插件,我修改了submitHandler,这样表单只提交,如果flag为true。
var flag = false;
$('#login-form').validate(
{
rules:
{
User: "required",
Password: "required"
},
messages:
{
User: "Please enter a Username!<br />",
Password: "Please enter a Password!",
},
submitHandler: function(form)
{
if(flag)
{
var message = document.createElement("div");
message.id = "info";
message.style.width = "250px";
message.style.height = "25px";
message.style.color = "green";
message.innerHTML = '<p style="text-align: center;">Your Login Data is correct!.</p>';
$("#login-form").after(message);
form.submit();
}
},
});
这里是php部分,我想将标志设置为true,如果登录数据是正确的,否则它应保持原样但我现在如何设置标志?
if(!empty($result))
{
**Here i want to set the Flag!!
$flag = true; ??****
$_SESSION["loggedin"] = $user;
header ("Location: index.php?site=backend");
exit;
}
else
{
echo '<p style="text-align: center; color: red">The username or password is wrong!</p>';
header ("Refresh:2; url=index.php?site=backend-login");
exit;
}
还是有更好的方法吗?我只是不想总是重新加载表单,因为它是一个自我提交的表单。之后我还想展示一条信息。 那么,我如何设置或更改var test的现有值?
答案 0 :(得分:2)
只是做:
var flag = $('#login-form').valid();
..您将获得flag
中的布尔值。
<小时/> 阅读:
.valid()
| jQuery Validation Plugin
form#login-form
<小时/> 编辑:
工作代码段:
var flag = false;
$('#login-form').validate(
{
rules:
{
User: "required",
Password: "required"
},
messages:
{
User: "Please enter a Username!<br />",
Password: "Please enter a Password!",
},
submitHandler: function(form)
{
var flag = $('#login-form').valid();
if(flag)
{
var message = document.createElement("div");
message.id = "info";
message.style.width = "250px";
message.style.height = "25px";
message.style.color = "green";
message.innerHTML = '<p style="text-align: center;">Your Login Data is correct!.</p>';
$("#login-form").after(message);
form.submit();
}
},
});
input, label{
display: block;
margin: 10px;
font-family: Arial;
}
label.error{
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.min.js"></script>
<form id="login-form">
<input type="text" id="User" name="User" />
<input type="password" id="Password" name="Password" />
<input type="submit" value="Login"/>
</form>
编辑2:
在回应评论时,我强烈建议您使用AJAX。使用AJAX,首先检查用户是否存在,然后将适当的值设置为flag
并将其传递给Javascript,然后继续使用。
阅读:jQuery.ajax()
| jQuery API Documentation。
这是将数据从JS传递到PHP的最合适方式,反之亦然。
答案 1 :(得分:0)
在你的PHP文件中,你需要输出一些像这样的
的javascript代码// PHP file where your checks are making flag = true
echo '<script type="text/javascript"> var flag = true; </script>';
和
// PHP file where your checks are making flag = false
echo '<script type="text/javascript"> var flag = false; </script>';
然后不要使用您的javascript为您的旗帜重新分配价值。从您的javascript中删除var flag = false;
。
要小心,PHP必须在您的js代码之前回显(因此您的标志将首先获取值,然后您的js将使用它)。