[英]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.