在onClick中组合2个元素

时间:2011-02-02 20:25:04

标签: javascript onclick

我完全使用1 onClick调用(进行电子邮件验证)。

<script type='text/javascript'>
function emailValidator(elem, helperMsg){
    var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
    if(elem.value.match(emailExp)){
        return true;
    }else{
        alert(helperMsg);
        elem.focus();
        return false;
    }
}
</script>

在我的页面正文

<a href="#" 
   title="Yes, Count Me In!" 
   onclick="emailValidator(document.getElementById('email'), 'Please Enter A Valid Email'); return false;"
>

----&GT; 现在,是否有可能为此onClick执行条件? 如果电子邮件字段有效,请运行此其他额外呼叫( rsvp('是'); )。

<a href="#" 
   title="Yes, Count Me In!" 
   onclick="emailValidator(document.getElementById('email'), 'Please Enter A Valid Email'); rsvp('yes'); return false;" 
>

4 个答案:

答案 0 :(得分:2)

<a href="#" title="Yes, Count me In!" onclick="myFunction">

<script>
    function myFunction() {
        var elem = document.getElementById("email");
        emailValidator(elem, 'Please Enter A Valid Email') && rsvp('yes'); 
    }

    var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;

    function emailValidator(elem, helperMsg){
        return elem.value.match(emailExp) ?
            true :
            (alert(helperMsg), elem.focus(), false);
    }

</script>

第一个将代码发送到全局函数的摘要。然后验证电子邮件并仅运行 rsvp函数,如果电子邮件有效(即它返回true)

答案 1 :(得分:0)

创建一个处理逻辑的全局函数,并将此函数调用到onclick事件中

答案 2 :(得分:0)

是的,尽管这是可能的,但它可能无法解决你想要的方式。因此,您的代码将调用rsvp函数nomatter从emailValidator函数获得的内容。你可能想做这样的事情:

<a href="#" title="Yes, Count Me In!" onclick="if(emailValidator(document.getElementById('email'), 'Please Enter A Valid Email')){rsvp('yes');};return false;">

另一个聪明的提示是将document.getElementById - 部分替换为this,如下所示:

<a href="#" title="Yes, Count Me In!" onclick="if(emailValidator(this, 'Please Enter A Valid Email')){rsvp('yes');};return false;">

这应该确保即使你重命名输入的id,它仍然可以工作。当在onclick,onchange或其他任何内容中时,这总是会被单击/编辑/等对象。

另外,正如其他人所建议的那样,我建议制作一个能为你做这个的功能,但我知道那些喜欢将所有逻辑都放在onclick-handler中的人,因为这就是你要求我做的事情。以为我会说明怎么做。但请注意,这会很快变得混乱,并且会像

那样
function rsvpClick() {
    if(emailValidator(document.getElementById('email'), 'Please Enter A Valid Email')) rsvp('yes');
}

然后

<a href="#" title="Yes, Count Me In!" onclick="rsvpClick();">

通常更干净,更易读。

答案 3 :(得分:-1)

如果通过验证,您可以只调用rsvp()函数。像这样:

function ValidateAndRSVP(elem, helperMsg){     
    var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;     
    if(elem.value.match(emailExp)){  
        rsvp('yes');      
        return true;     
    }
    else{         
        alert(helperMsg);         
        elem.focus();         
        return false;     
    }
}