0

我在发布之前使用以下 javascript 检查我的表单,但检查在 IE7 和 IE8 中不起作用,这是带有 onClick 的表单代码(也 onSubmit 不起作用)。在 Internet Explorer 中,它只是跳过检查并发送详细信息。

<form action="bedankt.php" method="post" onClick="return checkforblank();" /></form>



这是我正在使用的 javascript:

function checkforblank() {

var errormessage = "";

    if (document.getElementById('voornaam').value == "") {
    errormessage += "u bent vergeten uw voornaam in te vullen, ";
    document.getElementById('voornaam').style.bordercolor = "red";
    }

    if (document.getElementById('achternaam').value == "") {
    errormessage += "u bent vergeten uw achternaam in te vullen, " ;
    document.getElementById('achternaam').style.bordercolor = "red";
    }

    if (document.getElementById('dag').value == "") {
    errormessage += "u bent vergeten een dag te selecteren, " ;
    document.getElementById('dag').style.bordercolor = "red";
    }

    if (document.getElementById('maand').value == "") {
    errormessage += "u bent vergeten een maand te selecteren, " ;
    document.getElementById('maand').style.bordercolor = "red";
    }

    if (document.getElementById('jaar').value == "") {
    errormessage += "u bent vergeten een jaar te selecteren, " ;
    document.getElementById('jaar').style.bordercolor = "red";
    }


var inputVal = document.getElementById('telefoonnummer').value;
if (inputVal == "") {
    errormessage += "u bent vergeten uw 10 cijferige telefoonnummer in te vullen ";

} else if (inputVal != "" && inputVal.length !== 10) {
    console.log("error");
    errormessage += "u bent vergeten uw 10 cijferige telefoonnummer in te vullen ";
    //set your error message here
} else {
    console.log("success");
}

if (errormessage != "") {
    console.log("error present");
    $(".error-messages").text(errormessage).fadeIn();
    return false;
}

else {
    document.getElementsByTagName("form")[0].submit();
}

}
4

1 回答 1

2

1 . 全部更改console.log

window.console && console.log

因为只有在控制台打开时才在 IE 中有效

2 . 改变

else {
    document.getElementsByTagName("form")[0].submit();
}

return true;

因为您已经在提交表单并且您不需要在上一个语句中的 return false 之后有一个 else

我对整个事情进行了尝试,因为它让我看到所有重复的代码 - 你也使用 jQuery,所以我从 DOM 转换

注意我将错误消息的类更改为 ID

现场演示

function isValid(fldId,len) {
   var fld = $("#"+fldId);
   var val = fld.val();
    window.console && console.log(fld,fldId)
   if (val == "" || (len && val.length<len)) {
      fld.css("borderColor","red");
      return false;
   }      
   fld.css("borderColor","black");
   return true;
}

$(function() {
  $("form").on("submit",function() {
    var errormessage = [];

    if (!isValid('voornaam')) {
      errormessage.push("u bent vergeten uw voornaam in te vullen, ");
    }
    if (!isValid('achternaam')) {
      errormessage.push("u bent vergeten uw achternaam in te vullen, ");
    }
    if (!isValid('dag')) {
      errormessage.push("u bent vergeten een dag te selecteren, ");
    }
    if (!isValid('maand')) {
      errormessage.push("u bent vergeten een maand te selecteren, ");
    }
    if (!isValid('jaar')) {
      errormessage.push("u bent vergeten een jaar te selecteren, ");
    }
    if (!isValid('telefoonnummer',10)) {
      errormessage.push("u bent vergeten uw 10 cijferige telefoonnummer in te vullen");
    } 
    if (errormessage.length>0) {
      window.console && console.log("error present");
      $("#error-messages").html(errormessage.join('<br/>')).fadeIn();
      return false;
    }
    window.console && console.log("success");
    return true;
  });
});
于 2013-08-09T14:12:47.793 回答