布尔非常奇怪的javascript问题

时间:2014-12-18 02:06:04

标签: javascript php jquery ajax html5

布尔值将在函数内部设置变量之前工作但不在之后?这些变量都来自表格,除了" status"。

这是功能:

<script src="js/main.js"></script>
<script src="js/ajax.js"></script>
<script>
function signup(){

//    if(1==1){                     -----When I place this here, the alert comes up.
//           alert("yes");
//    }
var u = _("username").value;
var e = _("email").value;
var p1 = _("pass1").value;
var p2 = _("pass2").value;
var c = _("country").value;
var g = _("gender").value;
var a = _("age").value;
var o = _("occ").value;
var status = _("status");

// Nothing below here works

if(u == "" || e == "" || p1 == "" || p2 == "" || c == "" || g == "" || a == "" || o == ""){
status.innerHTML = "Fill out all of the form data";
     alert("true");
} else if(p1 != p2){
    status.innerHTML = "Your password fields do not match";

}

 else if( _("terms").style.display == "none"){
    status.innerHTML = "Please view the terms of use";
} else {
    _("signupbtn").style.display = "none";
    status.innerHTML = 'please wait ...';
    var ajax = ajaxObj("POST", "signupfront.php");
ajax.onreadystatechange = function() {
   if(ajaxReturn(ajax) == true) {
       if(ajax.responseText != "signup_success"){
                status.innerHTML = ajax.responseText;
                _("signupbtn").style.display = "block";
            } else {
                window.scrollTo(0,0);
                _("signupform").innerHTML = "OK "+u+", check your email inbox and junk mail box at <u>"+e+"</u> in a moment to complete the sign up process by activating your account. You will not be able to do anything on the site until you successfully activate your account.";
 }
   }
    }
    ajax.send("u="+u+"&e="+e+"&p="+p1+"&c="+c+"&g="+g+"&a="+a+"&o="+o);
}
}

此功能由一个按钮调用,我希望该功能可以在按钮旁边返回消息。

<button id="signupbtn" onclick="signup()">Create Account</button>
<span id="status"></span>

main.js包含以下内容:

function _(x){
    return document.getElementById(x);
}

任何有关这方面的帮助都会非常感激,因为我已经看了好几个小时而无法弄明白。 提前致谢

这是请求的html:

<body>

<div id="pageMiddle">
  <h3>Create Account</h3>
  <form name="signupform" id="signupform" onsubmit="return false;">
    <div>Username: </div>
    <input id="username" type="text" onblur="checkusername()" onkeyup="restrict('username')" maxlength="16">
    <span id="unamestatus"></span>
    <div>Email Address:</div>
    <input id="email" type="text" onfocus="emptyElement('status')" onkeyup="restrict('email')" maxlength="88">
    <div>Create Password:</div>
    <input id="pass1" type="password" onfocus="emptyElement('status')" maxlength="16">
    <div>Confirm Password:</div>
    <input id="pass2" type="password" onfocus="emptyElement('status')" maxlength="16">
    <div>Age:</div>
    <input id="age" type="text" onfocus="emptyElement('status')" maxlength="3">
    <div>Occupation:</div>
    <input id="occ" type="text" onfocus="emptyElement('status')" maxlength="88">
    <div>Gender:</div>
    <input type="radio" name="gender" value="m">Male
    <input type="radio" name="gender" value="f">Female
    <div>Country:</div>
    <select id="country" onfocus="emptyElement('status')">
    //long list of countries here
    </select>
    <div>
      <a href="#" onclick="return false" onmousedown="openTerms()">
        View the Terms Of Use
      </a>
    </div>
    <div id="terms" style="display:none;">
      <h3>Our Terms Of Use</h3>
      <p>v</p>
    </div>
    <br /><br />
    <button id="signupbtn" onclick="signup()">Create Account</button>
    <span id="status"></span>
  </form>
</div>
</body>

3 个答案:

答案 0 :(得分:1)

如果您在变量声明中引用的任何input字段不存在,则您的代码将失败,因为您在未定义的字段上调用.value

发布您的 HTML ,我们可以搞清楚。

答案 1 :(得分:0)

尝试使用此

if(1===1){                     
     alert("yes");
}

if(u === "" || e === "" || p1 === "" || p2 === "" || c === "" || g === "" || a === "" || o === ""){
  status.innerHTML = "Fill out all of the form data";
  alert("true");
} else if(p1 != p2){
  status.innerHTML = "Your password fields do not match";

}

希望这个帮助

答案 2 :(得分:0)

查看gender输入

<div>Gender:</div>
<input type="radio" name="gender" value="m">Male
<input type="radio" name="gender" value="f">Female

这是你的错误

var g = _("gender").value;

代码在上面一行中断,因为你试图获取id等于gender的元素的值,但是没有id="gender"属性的元素。< / p>

您需要将性别输入更改为以下内容,其中单选按钮具有唯一ID(genderMalegenderFemale

<div>Gender:</div>
<input type="radio" name="gender" id="genderMale" value="m">Male
<input type="radio" name="gender" id="genderFemale" value="f">Female

然后使用以下语法将所选性别的值分配给g变量

var g = "";
if (document.getElementById("genderMale").checked) {
    g = _("genderMale").value;
} else if (document.getElementById("genderFemale").checked) {
    g = _("genderFemale").value;
}

以下是javascript的修改部分

var u = _("username").value;
var e = _("email").value;
var p1 = _("pass1").value;
var p2 = _("pass2").value;
var c = _("country").value;
var a = _("age").value;
var o = _("occ").value;
var status = _("status");
var g = "";
if (document.getElementById("genderMale").checked) {
    g = _("genderMale").value;
} else if (document.getElementById("genderFemale").checked) {
    g = _("genderFemale").value;
}

if (u == "" || e == "" || p1 == "" || p2 == "" || c == "" || g == "" || a == "" 
    || o == "") {
    status.innerHTML = "Fill out all of the form data";
    alert("true");
}

演示:http://jsfiddle.net/zpeu4fq9/1/