任何人都可以告诉我这个代码有什么问题,我验证一个表单,确保所有字段都有文字,然后才能提交。一切正常,直到我输入!='' var.
我确定id是正确的
<script src="jquery.js" type="text/javascript" language="javascript"></script>
<script language="javascript">
$(document).ready(function() {
// declare the flags outside the other functions
var username_ready = false;
var email_ready = false;
function checkSubmitStatus() {
var emailvalue = $("#email").val();
var usernamevalue = $('#username').val();
var firstvalue = $('#first').val();
var lastvalue = $('#last').val();
var passwordvalue = $('#password').val();
if (username_ready && email_ready && emailvalue!='' && usernamevalue!='' && firstvalue!='' && lastvalue!='' && passwordvalue!=''){
$("#register").prop('disabled',false);
}
else {$("#register").prop('disabled',true);}
}
这是我的表单代码,所以你可以看看这是否是问题...
<p>First Name: <input id="first" type="text" name="name" maxlength="100"> </p>
<p>Last Name: <input id="last" type="text" name="name" maxlength="100"> </p>
<p> Email: <input type="text" name="email" id="email" maxlength="100" />
<span id="box" style="display:none"></span></p>
User Name : <input name="username" type="text" id="username" value="" maxlength="15" />
<span id="msgbox" style="display:none"></span>
<p> Password: <input id="password" type="password" name="password"> </p>
答案 0 :(得分:4)
您拼错了变量名firstvalue
:
firstvale!=''
修改强>
移动这5行:
var emailvalue = $("#email").val();
var usernamevalue = $('#username').val();
var firstvalue = $('#first').val();
var lastvalue = $('#last').val();
var passwordvalue = $('#password').val();
从function checkSubmitStatus(){
下方到你的大if语句之上。
现在它们只是分配一次,当页面首次加载时,它被赋予表单的值,我假设其中至少有一个是空的。
您需要将这些行移动到checkSubmitStatus()
函数中,以便在调用函数时更新它们。最终结果应如下所示:
var username_ready = false;
var email_ready = false;
function checkSubmitStatus() {
var emailvalue = $("#email").val();
var usernamevalue = $('#username').val();
var firstvalue = $('#first').val();
var lastvalue = $('#last').val();
var passwordvalue = $('#password').val();
if (username_ready && email_ready &&
emailvalue!='' && usernamevalue!='' &&
firstvalue!='' && lastvalue!='' && passwordvalue!=''){
$("#register").prop('disabled',false);
} else {
$("#register").prop('disabled',true);
}
}
答案 1 :(得分:0)
从您的代码判断,我感觉它是从代码的不同部分复制粘贴在一起的。可能发生的事情是emailvalue
,usernamevalue
等在checkSubmitStatus
被调用时确实超出了范围。我可能也错了,但很难根据提供的代码说出更多信息,因为它似乎没问题。
您可以在if语句之前alert(emailvalue);
查看是否获得undefined
或某个值。如果它未定义,则可能存在范围问题。
从上面的代码中,您似乎也可以在真正输入任何内容或提交表单之前分配这些变量值。