jQuery打破.each
Posted
技术标签:
【中文标题】jQuery打破.each【英文标题】:jquery break .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 语句失败是您提交表单的唯一方式。 表格将在第一个有效百分比数字上提交。最简单的方法是在“每个”循环之前创建一个标志,并在循环内设置。使用此标志循环后,您可以决定是否提交。 【参考方案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;
);
【讨论】:
以上是关于jQuery打破.each的主要内容,如果未能解决你的问题,请参考以下文章