簡體   English   中英

window.onload方法,如何調用多個函數

[英]window.onload method, how to call multiple functions

編寫一些JavaScript以使表單不會在填寫的字段較少的情況下提交,如果用戶未填寫,則會彈出一條消息,提示“請填寫名稱字段”或“請填寫電子郵件字段”等。我為每個字段編寫一個單獨的函數(不知道這是正確的方法),當我將每個函數添加到window.onload時,僅彈出其中一條消息。 任何建議都很好。

的HTML

 <form id="frmContact" name="frmContact" method="post" action="thanks.htm">
    <fieldset id="quickSupport">
      <legend><strong>Quick Support</strong></legend>
      <p> If your request isn't urgent, drop us a quick line and we'll get back to you within 24 hours </p>
      <p>
        <label for="name">Name:</label>
        <input type="text" value="Your Name" name="name" id="name" tabindex="10" />
      </p>
      <p>
        <label for="email">Email:</label>
        <input type="text" value="Your Email" name="email" id="email" tabindex="20" />
      </p>
        <label for="comments">Comments </label>
        <br />
        <textarea name="comments" value="Message" id="comments" cols="45" rows="5" tabindex="60" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;">Message</textarea>
      </p>
      <p>
        <input type="submit" name="submit" id="submit" value="Send" tabindex="70" />
      </p>
    </fieldset>
  </form>

   <p><span id="errorMessage"></span></p>
   <p><span id="errorMessage1"></span></p>

的JavaScript

function prepareEventHandlers () {
document.getElementById("frmContact").addEventListener("submit", function(event) {

        // Show message
        if (document.getElementById("email").value == "Your Email") {
            document.getElementById("errorMessage").innerHTML = "Please provide at least an email address!";
            // to STOP the form from submitting
            return false;
        } else {
            // reset and allow the form to submit
            document.getElementById("errorMessage").innerHTML = "";
            return true;
        }

        event.preventDefault(); // Prevent form from submitting
    }
});
}

function prepareEventHandlersName () {
document.getElementById("frmContact").addEventListener("submit",         function(event) {

        // Show message
        if (document.getElementById("name").value == "Your Name") {
            document.getElementById("errorMessage1").innerHTML = "Please provide a name!";
            // to STOP the form from submitting
            return false;
        } else {
            // reset and allow the form to submit
            document.getElementById("errorMessage1").innerHTML = "";
            return true;
        }

        event.preventDefault(); // Prevent form from submitting
    }
});
}


function start() {
prepareEventHandlers();
prepareEventHandlersName();
}

window.onload =開始;

您應該使用瀏覽器的內置驗證屬性。

<form id="frmContact" name="frmContact" method="post" action="thanks.htm">
    <fieldset id="quickSupport">
        <legend><strong>Quick Support</strong></legend>
        <p>If your request isn't urgent, drop us a quick line and we'll 
            get back to you within 24 hours</p>
        <p>
            <label for="name">Name:</label>
            <input type="text" value="Your Name" name="name" id="name" 
                tabindex="10" required />
        </p>
        <p>
            <label for="email">Email:</label>
            <input type="text" value="Your Email" name="email" id="email" 
                tabindex="20" required />
        </p>
        <label for="comments">Comments</label>
        <br />
        <textarea name="comments" value="Message" id="comments" cols="45" 
            rows="5" tabindex="60" 
            placeholder="PLACEHOLDER WHEN NO MESSAGE IS WRITTEN" required>Message</textarea>
        </p>
        <p>
            <input type="submit" name="submit" id="submit" value="Send" 
                tabindex="70" />
        </p>
    </fieldset>
</form>

當您嘗試提交表單時,瀏覽器將自動以用戶的語言為您顯示漂亮的錯誤消息。 無需JavaScript。


您的代碼失敗的原因,因為

document.getElementById("frmContact").onsubmit = ...

將覆蓋您之前添加的所有onsubmit處理函數。

如果要添加多個功能,則需要改用.addEventListener()

一種更正確的方法是創建一個執行所有檢查的函數,並將其作為處理程序附加一次。

這兩個函數都在運行,但是您要在第二個函數中覆蓋frmContactonsubmit處理程序。 為避免這種情況,請勿以這種方式分配事件處理程序。 而是使用addEventListener

document.getElementById("frmContact").addEventListener("submit", function(event) {
    if (document.getElementById("email").value == "Your Email") {
        // Show message
        event.preventDefault(); // Prevent form from submitting
    }
});

請注意,以這種方式進行操作時,僅返回false便無法阻止表單提交。 相反,您必須使用事件的preventDefault方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM