添加要提交的事件按钮

Add event to submit button

本文关键字:事件 按钮 提交 添加      更新时间:2023-09-26

>我刚刚开始用这个JS代码学习JSs。

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