如何从事件处理程序返回

时间:2016-01-22 12:10:49

标签: javascript jquery

这是一个草案代码:

<form action="test.php" method="post">
    <input type="text" id="content">
    <input type="button" name="validate_button" id="validate_button" value="Validate" />
    <input type="submit" name="submit_button" id="submit_button" value="Send" />
</form>

<script>
$('#submit_button').click(function(e) {
    if (!($('#validate_button').click()))
        e.preventDefault();
});

$('#validate_button').click(function() {
    if ($('#content').val() === '')
        return false;
    return true;
});
</script>

我想点击submit_button来运行validate_button的事件处理程序并决定是否提交表单。显然,我的条件!($('#validate_button').click())不正确,因为它返回一个jQuery对象。 如何获取事件处理程序本身的返回结果?

P.S。不建议将条件$('#content').val()===''放在第一个事件处理程序中......

3 个答案:

答案 0 :(得分:2)

为什么不在两个点击处理程序中创建一个函数并调用它:

$('#submit_button').click(function(e){
    if (!validate())
      e.preventDefault();
});

$('#validate_button').click(function(){
    return validate();
});

function validate() {
    if ($('#content').val()==='')
      return false;
    return true;  
}

答案 1 :(得分:0)

您可以创建一个函数并将其用作#validate_button点击的处理程序,也可以从#submit_button点击处理程序调用它。

// Function to validate the value of `#content`
// Return false when value is empty, true o.w.
function validate() {
    // Trim the leading and trailing spaces
    // Note: Empty string in JS is falsy
    return $.trim($('#content').val());
}

$('#submit_button').click(function (e) {
    // Other code

    return validate();
});

// Pass the function reference to the click()
$('#validate_button').click(validate);

答案 2 :(得分:0)

为什么不使用JavaScript呢?

<input type="text" id="content" required />