2012-11-04 82 views
0

我有一個表單,他包含textfields百分比數據,點擊提交我想要驗證所有使用每個類選擇器的百分比,並檢查無效的百分比每個和焦點字段,但'返回false' 不打破這個jquery break每個

我的代碼:

$('#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 
+2

如果表單被提交,你的if語句失敗。另外,在每個循環內提交一個表單似乎不是一個好主意? – adeneo

+0

通過上面的代碼,您的if語句失敗是您的表單將被提交的* only *方式。 – techfoobar

+1

表格將以第一個有效的百分數提交。 最簡單的方法是在'each'循環前創建一個標誌,並在循環內部設置。 使用此標誌的循環後,您可以決定是否提交。 – Leonti

回答

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; 
}); 
0

考慮更改代碼中使用其設置爲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; 
}); 
0

只是我的版本。這實際上會破壞你喜歡的每一個。

$('#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; 
});