【问题标题】:jquery break .eachjQuery打破.each
【发布时间】:2012-10-24 13:34:33
【问题描述】:

我有一个表单,他包含百分比数据的文本字段,单击提交时我想在每个表单上使用类选择器验证所有百分比,并检查无效百分比中断每个焦点字段,但“返回 false”不要打破这个

我的代码:

$('#enviarquestionario').click(function(event){
    event.preventDefault();

        $('input.percent').each(function(){
            valor = $(this).val();
            if(isNaN(valor) || valor > 100 || valor < 0 ){
                alert('Preencha corretamente os campos de porcentagem com valores entre 0 e 100');
                $(this).focus();
                return false;
            }else{
                $('#questionarioparticipacao').submit();
            }
        });

    return false;
});

表单正在以某种方式被提交。

 #enviarquestionario is a ancor

【问题讨论】:

  • 如果表单提交,你的 if 语句失败。此外,在每个循环中提交表单似乎不是一个好主意?
  • 使用上面的代码,您的 if 语句失败是您提交表单的唯一方式。
  • 表格将在第一个有效百分比数字上提交。最简单的方法是在“每个”循环之前创建一个标志,并在循环内设置。使用此标志循环后,您可以决定是否提交。

标签: jquery jquery-ui jquery-plugins jquery-selectors


【解决方案1】:

试试这个:

$('#enviarquestionario').click(function(event){
    event.preventDefault();
    var isError = false;

    $('input.percent').each(function(){
        valor = $(this).val();
        if(isNaN(valor) || valor > 100 || valor < 0 ){
            alert('Preencha corretamente os campos de porcentagem com valores entre 0 e 100');
            $(this).focus();
            isError = true;
            return false;
        }
    });

    if(!isError){ $('#questionarioparticipacao').submit(); }

    return false;
});

【讨论】:

    【解决方案2】:

    考虑更改您的代码以使用设置为 false 的有效标志,即使一次验证失败:

    $('#enviarquestionario').click(function(event){
    
            event.preventDefault();
    
            var valid = true; // initially set to true
    
            $('input.percent').each(function(){
                valor = $(this).val();
                if(isNaN(valor) || valor > 100 || valor < 0 ){
                    alert('Preencha corretamente os campos de porcentagem com valores entre 0 e 100');
                    $(this).focus();
                    valid = false; // set to false even if one fails
                    return false;
                }
            });
    
            // submit only if all validations pass
            if(valid === true) $('#questionarioparticipacao').submit();
    
            return false;
    });
    

    【讨论】:

      【解决方案3】:

      只是我的版本。这实际上会像您想要的那样破坏 .each。

      $('#enviarquestionario').click(function(event){
          event.preventDefault();
              var breakerbreaker = false;
              $('input.percent').each(function(){
                  if(breakerbreaker){ return false; }
      
                  valor = $(this).val();
                  if(isNaN(valor) || valor > 100 || valor < 0 ){
                      alert('Preencha corretamente os campos de porcentagem com valores entre 0 e 100');
                      $(this).focus();
                      breakerbreaker = true;
              });
      
          if(!breakerbreaker){ $('#questionarioparticipacao').submit(); }    
          return false;
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-30
        • 2012-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        • 2016-08-17
        相关资源
        最近更新 更多