【问题标题】:Jquery multi submit eventJquery 多提交事件
【发布时间】:2012-03-27 08:05:00
【问题描述】:

我为 jquery 编写了全局迷你表单验证。这里; 这段代码,所有表单提交事件监听器。

$('form').submit(function() {
       var returnfalse = 'true';
        var min;
        var maxlength;

        $('input[type=text], input[type=password]', this).removeClass('error');

        jQuery.each( $('input[type=text], input[type=password]', this) , function() {


            min = $(this).attr('min');
            maxlength = $(this).attr('maxlength');
            inputValue = $(this).val().trim();



            if( $(this).attr('min') != '' && $(this).attr('min') != null && inputValue.length < min ) {
                alert('ERROR !!!!!')
                $(this).addClass('error');
                $(this).focus();
                returnfalse = 'false';
            }



            if(returnfalse != 'true')
                return false;


        });

        if(returnfalse != 'true')
            return false;

    });

等提交事件;

$('#registerForm').submit(function(){
   alert('this Work...');
});

当我#registerForm 提交时,这两个事件有效。但是我在上面写了 return false 事件。

为什么第二个事件有效?

【问题讨论】:

  • 您的returnfalse,在您发布的代码中没有定义?
  • 啊。对不起,我忘记写了。上面的'var returnfalse'。

标签: jquery forms submit


【解决方案1】:

两个考虑:

1) 你应该在事件上调用 stopImmediatePropagation() 以防止警报 (http://jsfiddle.net/R7uwa/)(如果我记得正确返回 false 等于 .preventDefault() 和 stopPropagation()。所以在这种情况下没有警报:

$('form').submit(function(e){
    e.stopImmediatePropagation();
    return false;
});


$('form').submit(function(){
    alert('hi');
});

2) 以这种方式绑定的事件按照您绑定它们的顺序执行,因此您应该首先绑定您的验证,以便停止传播工作 (http://jsfiddle.net/R7uwa/1/)。但是,如果您查看这个问题jQuery event handlers always execute in order they were bound - any way around this?,您会发现有一个解决方法。

在这种情况下,您会收到警报

$('form').submit(function(){
    alert('hi');
});


$('form').submit(function(e){
    e.stopImmediatePropagation();
    return false;
});

【讨论】:

    【解决方案2】:

    return false 基本上阻止了 jQuery 中事件的默认浏览器行为。

    在第一个代码示例中,return false 将确保避免默认浏览器的表单提交操作,但不会避免在单个事件上调用多个方法。

    当您在单个表单提交事件上绑定两个方法时,它将依次调用这两个方法,第一个方法将确保避免浏览器的默认提交操作。

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 2020-03-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 2015-09-20
      • 2013-04-23
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多