添加事件以提交按钮

时间:2013-01-28 03:38:21

标签: javascript html css

我刚开始用这个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>

在浏览器中预览时,即使我没有点击提交按钮,也会自动显示警告弹出窗口。 有人可以解释一下发生了什么吗? 感谢。

4 个答案:

答案 0 :(得分:5)

函数名后面的括号会使函数立即被调用。由于您只是将其指定为事件侦听器,因此您希望传递它。

删除括号,它将在执行前等待点击:

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

答案 1 :(得分:2)

我做了一些小改动,所以它也适用于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>

答案 2 :(得分:1)

从formvalidate中删除括号,例如:

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

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

请参阅:addEventListener

答案 3 :(得分:0)

事件监听器不包含括号,将其删除。如果你为它添加括号,它看起来像函数,但在这里你必须分配你的eventlistener。

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