所以我有一个表单,一个id和密码以及一个提交按钮,当用户填写并提交按钮时,有一个函数检查id是否匹配密码。但它总是在函数中返回false。为什么?这是代码:
<form>
<input type="text" name="u" placeholder="ID" required="required" />
<input type="password" name="p" placeholder="Password" required="required" />
<button id="but" type="submit" class="btn btn-primary btn-block btn-large">Enter Workspace</button>
</form>
$(document).ready(function(){
$('#but').click(function(e) {
e.preventDefault();
console.log("in function");
var ID=$('input[name=u]').val();
var password = $('input[name=p]').val();
if(personnel[ID]){
if(personnel[ID].password === password){
window.open("Workspace/index.html");
}
else{
alert("Incorrect ID Or Password")
}
}
else{
alert("Incorrect ID Or Password")
}
});
});
var人员在另一个脚本中,
<script src="L/scripts.js"></script>
答案 0 :(得分:1)
问题是您的密码是数字,但.val()
会返回一个字符串。并且您正在使用与===
的严格比较,因此它不会强制执行这些类型。
您应该将密码更改为personnel
中的字符串。
var personnel = {
"I000001": {
"password": "125827"
},
"I000002": {
"password": "192374"
},
"I000003": {
"password": "197292"
},
"I000004": {
"password": "193287"
},
"I000005": {
"password": "142823"
},
"I000006": {
"password": "192373"
},
"I000007": {
"password": "192834"
},
"I000008": {
"password": "123241"
},
"I000009": {
"password": "192392"
},
"I000010": {
"password": "200029"
},
};
$(document).ready(function() {
$('#but').click(function(e) {
e.preventDefault();
console.log("in function");
var ID = $('input[name=u]').val();
var password = $('input[name=p]').val();
if (personnel[ID]) {
if (personnel[ID].password === password) {
alert("Password is correct");
} else {
alert("Incorrect Password");
}
} else {
alert("Incorrect ID");
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="u" placeholder="ID" required="required" />
<input type="password" name="p" placeholder="Password" required="required" />
<button id="but" type="submit" class="btn btn-primary btn-block btn-large">Enter Workspace</button>
&#13;