简体   繁体   English

为什么验证功能在页面刷新后调用而单击时什么也没有发生

[英]why validate function invoke after page refresh and nothing happen on click

var asign = function(id){

 return document.getElementById(id) ;
 } ;

var f_name = asign('fname').value ;

 var validate = function (a) {
this.a = a ;
    if(!a){
        alert("Somthing is require");
    }  else if(a.length<6){
        alert("characters should be minimum 6") ;
    }
}  


 asign('submit').addEventListener('click',validate(f_name),false) ;

validate function invoke in page refresh and after click the button nothing happen validate function nothing happen 验证功能在页面刷新中调用,单击按钮后没有任何反应验证功能没有任何反应

You need pass reference to function as a argument in addEventListener but not call it, 您需要传递引用以将函数用作addEventListener的参数,但不能调用它,

1 .you can wrap your code to function like this 1。您可以将代码包装成这样的功能

asign('submit').addEventListener('click', function () {
  validate();
}, false);

2 .or use .bind 2。或使用.bind

asign('submit').addEventListener('click', validate.bind({}), false);

Example

 var asign = function(id) { return document.getElementById(id); }; var validate = function () { var a = asign('fname').value; if (!a) { alert("Somthing is require"); } else if (a.length < 6) { alert("characters should be minimum 6"); } } asign('submit').addEventListener('click', validate.bind({}), false); 
 <input id="fname"> <button id="submit">submit</button> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM