将true / false设置为if /或语句不起作用

时间:2012-10-08 15:57:51

标签: javascript if-statement

嘿,我有以下js代码来验证文本框:

function submitContactUs() {
   var canSubmit = true;

   if (($('#cf_name_txt').val() == "") || ($('#cf_name_txt').val().substr(0, 1) == "*") || ($('#cf_name_txt').length == 1)) {
    if (!$('#cf_name_txt').next('img').length) { //image not there yet
        $('#cf_name_txt').after(theErrorIcon + " id=\"errIcon_cfname\" />");
        $('#errIcon_cfname').vibrate(conf);
        canSubmit = false;
        console.log('false name');
    }
   } else {
    $('#errIcon_cfname').remove();
        console.log('true name');
   }

   if (canSubmit) {
        alert(canSubmit);
        //$("#sendDataContactus").click();
   }

当我第一次点击按钮触发该功能时,我得到了正确的 false ,但是一旦我再次按下按钮(没有改变任何东西),由于某种原因,它会返回为 true ???有没有人看到js有什么问题导致它这样做?

我从按下第一个按钮获得的值是

false name

我从按下第二个按钮获得的值是

messagebox saying true

1 个答案:

答案 0 :(得分:2)

当您第二次点击时,您已经拥有img代码,因此您的变量不会重置canSubmit = false;

将变量赋值移到创建错误代码块之外,如下所示:

 if (($('#cf_name_txt').val() == "") || ($('#cf_name_txt').val().substr(0, 1) == "*") || ($('#cf_name_txt').length == 1)) {

    canSubmit = false;
    ...