簡體   English   中英

添加事件以提交按鈕

[英]Add event to submit button

我剛剛開始用這個js代碼研究js

<div class="container">    
    <form name="myForm" action="#"  method="post">
        First name: <input type="text" name="fname">
        <input type="submit" value="Submit" id="smit">
    </form> 

  <script>
var smit=document.getElementById("smit");
smit.addEventListener("click",formvalidate(),false); 

function formvalidate(){

    console.log(" vua moi click submit");

    if(t==null){
        var t= document.forms["myForm"]["fname"].value;
        if(t==null || t==""){
             alert("xin dien vao email");

        }
    }

}
</script>

在瀏覽器中預覽時,盡管我沒有單擊“提交”按鈕,但仍會自動顯示警報彈出窗口。 誰能解釋一下發生了什么? 謝謝。

函數名稱后的括號導致立即調用該函數。 由於您只是將其分配為事件偵聽器,因此您希望傳遞它。

刪除括號,它將在執行之前等待單擊:

smit.addEventListener("click", formvalidate, false);
//                                        ^^ No parentheses

我做了一些小的更改,因此它也可以在IE中使用:

<form name="myForm" id="myForm" action="#"  method="post">
    First name: <input type="text" name="fname" id="fname">
    <input type="submit" value="Submit" id="smit">
</form>

<script >
function formvalidate(event){
//removed console log because that only works in ie
// when debugging
    var t= document.getElementById("fname").value;
    if(t==""){
       alert("xin dien vao email");
       if(event.preventDefault){ event.preventDefault()}; 
       if(window.event){window.event.returnValue = false;}
    }
}
var smit=document.getElementById("myForm");
if(smit.addEventListener){
    smit.addEventListener("submit",formvalidate,false);
}else{
    //ie doesn't have addEventListner
    smit.attachEvent('onsubmit', formvalidate);
}
</script>

從formvalidate刪除括號,例如:

smit.addEventListener("click",formvalidate(),false); 

smit.addEventListener("click",formvalidate,false); 

請參閱: addEventListener

事件監聽器不包含括號,將其刪除。如果您在其中添加括號,則它看起來像函數,但在這里您必須分配事件監聽器。

smit.addEventListener("click",formvalidate,false); 

暫無
暫無

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

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