javascript - 在 js 中更改后边框轮廓保持恢复到原始状态

标签 javascript jquery html css

如果您能回答这个简单但令人难以置信的问题,我们将不胜感激。

我有一个联系表单,用户点击提交后,将运行我自己硬编码的强大的错误检查功能。错误检查将在每个未通过验证测试的表单元素周围应用红色边框,然后弹出警报,告诉用户错误位置和错误内容的详细列表。这一切都很好,除了每个表单元素的边框被设置为红色。它工作了一秒钟,足够你看到,然后奇怪地恢复到原来的边框颜色。到底发生了什么事?好像还有其他东西覆盖了这段代码???

发现另一个问题 我还刚刚发现,当所有 bool 检查变量都为真时,它不会像预期的那样提醒用户。我什至跑了这个没有显示。这里发生了一些事情......我不认为它是那个功能。我可能是错的,但我在其他地方使用过这个函数并且它起作用了(尽管它要检查的 bool 变量较少)

这是代码...

<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(所有这些都不相关,但这里可能有其他原因导致了问题)

<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>

最佳答案

我需要做的就是改变线路

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

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

谢谢大家的帮助!!!

关于javascript - 在 js 中更改后边框轮廓保持恢复到原始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38309752/

相关文章:

javascript - 通过字符串名称动态实例化子组件 - ReactJs

javascript - React Native WebView html <select> 无法在 Android 平板电脑上打开选项

javascript - 如何使用 React 从 json 对象创建列表

jquery - 通过标题jQuery获取元素

html - 用 3 个按钮创建一个表单

javascript - 在 Angular 7 中嵌入 iframe 是否有安全的方法?

javascript - 如何在 AJAX 加载的 HTML 上创建新的 Bootstrap 选择器控件?

javascript - 是否可以将 iframe 值放在 textarea 中?

javascript - 通过 AngularJS 从外部 URL 获取文本

javascript - 有类(class)元素的 child