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;

すでにフォームを送信しているため、前のステートメントで 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 に答える