js

2016-07-11 6 views
2

で変更された後、境界線の輪郭が元に戻って元の状態に戻ります。js

私はユーザーが投稿をクリックするコンタクトフォームを持っています。私は自分自身をハードコーディングした激しいエラーチェック機能を実行します。エラーチェックには、検証テストに合格しなかったすべてのフォーム要素の周りに赤色の枠が表示され、続いて、エラーがどこにあるのか、エラーが何であるかをユーザーに詳細に示す警告ポップアップが表示されます。これは、赤色に設定されている各フォーム要素の枠線を除いて、すべて正常に動作します。それは、元の境界線の色に戻って不思議に戻る前に、あなたが見て分かるように、1秒間隔で動作します。地球上で何が起こっているのですか?あたかもこのコードを乗り越えた何かがあるかのようです。

別の問題が発見されました また、すべてのブールチェック変数が真であると思われるようにユーザーに警告していないことがわかりました。私もこのalert(fnameCheck + ", " + lnameCheck + ", " + emailCheck + ", " + topicCheck + ", " + messageCheck + ", " + termsAndConsCheck);を実行し、警告は表示されませんでした。ここに何かが起こっている...そして、私はそれがその機能だとは思わない。ここで

コードは(それがチェックするために以下のブール変数を持っていたが)すべての(ここで

<div class="body" style="height:560px"> <!-- This is the body --><br /> 
     <span style="font-size:50px">Contact Us</span><br /> 
      <div style="margin-left:20px; text-align:left"> 
       Please feel free to enter your details below to contact us.<br /> 
      <span style="font-size:14px; color:grey">* = required field</span><br /><br /> 
       <form name="contactForm"> <!-- This is a form --> 
       First name*:<br /> 
       <input name="fname" type="text"><br /> 
      Last name*:<br /> 
      <input name="lname" type="text"><br /> 
      Email*: <br /><input name="email" type="text"><br /><br /> 
      My comment/ enquiry concerns*:<br /> 
      <select id="topic"> 
      <option value="Select a topic" selected>Select a topic</option> 
      <option value="Billing Questions">Billing Questions</option> 
      <option value="Returns/ Exchanges">Returns/ Exchanges</option> 
      <option value="Website Enquiries">Website Enquiries</option> 
      <option value="Product Enquiries">Product Enquiries</option> 
      <option value="Other">Other</option> 
      </select><br /><br /> 
      Message*:<br /><textarea id="message"></textarea> 
      <br /><br /> 
      If you'd like to send us a file, you may do so below but ensure that the file is no larger than 50MB. 
      <br /><input type="file" name="myFile"> 
      <br><br /> 
      You agree to the Privacy Policy (click to confirm)*. 
      <input name="tandc" type= "checkbox"><br /><br />  
      <button onclick="submitForm()">Hi</button> 
      <input type="reset" value="Reset"> 
      </form> 
     </div> 
    </div> 

はJavascriptのALLです...私が間違っている可能性が、私は他の場所でこの機能を使用しているし、それが働きましたそれが働いているようにそれを関連していないが、問題を引き起こし、ここで何か他のものがあるかもしれないの)

<script> 
document.getElementById("cover").style.display = "none"; 
function getCookie(cname) { 
    var name = cname + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0; i<ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
} 
var username=""; 
function checkCookie() { 
    username = getCookie("username"); 
    if (username != "") { 
     document.getElementById("topnavbar").innerHTML = "Welcome, " + username + ".&nbsp;|&nbsp;"; 
    } 
} 
checkCookie(); 

/* THIS IS THE RELEVANT STUFF FROM HERE DOWN TO THE NEXT COMMENT */ 
var topic = "Select a topic"; 
document.getElementById('topic').addEventListener("change", function() { 
    switch(this.value){ 
     case "Select a topic": 
     topic = "Select a topic" 
     break; 
     case "Billing Questions": 
     topic = "Billing Questions" 
     break; 
     case "Returns/ Exchanges": 
     topic = "Returns/ Exchanges" 
     break; 
     case "Website Enquiries": 
     topic = "Website Enquiries" 
     break; 
     case "Product Enquiries": 
     topic = "Product Enquiries" 
     break; 
     case "Other": 
     topic = "Other" 
     break; 
    } 
}); 
function submitForm(){ 
    var firstName = contactForm.fname.value; 
    var lastName = contactForm.lname.value; 
    var email = contactForm.email.value; 
    var message = contactForm.message.value; 
    var fnameCheck = false; 
    var lnameCheck = false; 
    var emailCheck = false; 
    var topicCheck = false; 
    var messageCheck = false; 
    var termsAndConsCheck = false; 
    var errorMsg = ""; 
    if(isNaN(firstName)&&firstName!=""){ 
     fnameCheck = true; 
    }else{ 
     fnameCheck = false; 
     if(fnameCheck == ""){ 
      errorMsg += "First Name - The field is empty \n"; 
     }else{ 
      errorMsg += "First Name - Please ensure it contains no numbers or symbols \n"; 
     } 
    } 
    if(isNaN(lastName)&&lasttName!=""){ 
     lnameCheck = true; 
    }else{ 
     lnameCheck = false; 
     if(lnameCheck == ""){ 
      errorMsg += "Last Name - The field is empty \n"; 
     }else{ 
      errorMsg += "Last Name - Please ensure it contains no numbers or symbols \n"; 
     } 
    } 
    if(email.indexOf("@") == -1 || email == ""){ 
     emailCheck == false; 
     if(email == ""){ 
      errorMsg += "Email - The field is empty \n"; 
     }else{ 
      errorMsg += "Email - This is not a valid email address\n"; 
     } 
    }else{ 
     emailCheck = true; 
    } 
    if(topic == "Select a topic"){ 
     topicCheck = false; 
     errorMsg += "Topic - Please select a topic \n"; 
    }else{ 
     topicCheck = true; 
    } 
    if(message == ""){ 
     messageCheck = false; 
     errorMsg += "Message - Please enter a message \n"; 
    }else{ 
     messageCheck = true; 
    } 
    if(!contactForm.tandc.selected){ 
     termsAndConsCheck = false; 
     errorMsg += "Terms and Conditions - Please tick the checkbox \n"; 
    }else{ 
     termsAndConsCheck = true; 
    } 
    if(fnameCheck && lnameCheck && emailCheck && topicCheck && messageCheck && termsAndConsCheck){ 
     alert("form submitted!"); 
    }else{ 
     if(!fnameCheck){ 
      contactForm.fname.style.borderColor = "red"; 
     } 
     if(!lnameCheck){ 
      contactForm.lname.style.borderColor = "red"; 
     } 
     if(!emailCheck){ 
      contactForm.email.style.borderColor = "red"; 
     } 
     if(!topicCheck){ 
      document.getElementById("topic").style.borderColor = "red"; 
     } 
     if(!messageCheck){ 
      contactForm.message.style.borderColor = "red"; 
     } 
     if(!termsAndConsCheck){ 
      contactForm.tandc.style.outline = "1px solid red"; 
     } 
     alert("Please fix the fields listed below... \n\n" + errorMsg + "\nThank you."); 
    } 
} 
/* THIS IS THE END OF THE RELEVANT CODE */ 

</script> 
<script type="text/javascript" src="./jquery-2.1.4.min.js"></script> 
<script> 
$(document).ready(function() { 
    $("#slider").animate({ 
    "left": $(".item:first").position().left + "px", 
    "width": $(".item:first").width() + "px" 
    }, 0); 

    $(".item").hover(function() { 
    $("#slider").stop(); 
    $("#slider").animate({ 
     "left": $(this).position().left + "px", 
     "width": $(this).width() + "px" 
    }, 500); 
    }); 

    $(".item").on("mouseout", function() { 
    $("#slider").stop(); 
    $("#slider").animate({ 
     "left": $('#four').position().left + "px", 
     "width": $('#four').width() + "px" 
    }, 500); 
    }); 
}); 
</script> 
+1

最初の問題は、http://stackoverflow.com/questions/3314989/can-i-make-a-button-not-submit-a-form – BSMP

+0

の複製です。関連する質問と提案を見ておきます似ているものはなかったので、@ BSMP – nobodyshere

答えて

0

それは私には見えますが、エラーがある場合は、提出からフォームを防止していません。ハイライトが起こっていると、メッセージボックスがポップアップしますが、フォームが送信され、すべて失われます。

にあなたのボタンを変更し

:私が行うために必要なすべてが

<button type="button" onclick="submitForm()">Submit</button> 

にラインに

<button onclick="submitForm()">Hi</button> 

を変更した

<button type="button" onclick="submitForm()">Hi</button>