【发布时间】:2014-12-15 16:08:06
【问题描述】:
我有这份调查问卷,可用于启动应用程序。我在提交之前使用 javascript 进行验证,但我遇到了一个问题,它只验证每个问题的第二个按钮,而不是单独验证每个问题。我在下面发布了代码。
问卷调查
<?
for($i = 1; $i <= count($questions); $i++){
print "<div class='form-group'>";
print "<div class='col-md-12'>";
print "<p>$i) ".$questions[$i-1]."</p>";
print "<label class='radio-inline'>";
print "<input type='radio' name='q$i' value='1'>Yes";
print "</label>";
print "<label class='radio-inline'>";
print "<input type='radio' name='q$i' value='-1'>No";
print "</label>";
print "</div>";
print "</div>";
}
?>
Javascript
$(function(){
$('#questionaire-form').submit(function(e){
e.preventDefault();
var prevname = "";
var questions = [];
$('.radio-inline').each(function(){
//$(this).next($(this)).is(':checked'));
var curname = $(this).find('input[type="radio"]').attr('name');
if(prevname == curname){
if(!$(this).find('input[name='+curname+']').is(':checked') && $(this).closest('div').find('p').hasClass('text-danger')){
return true; //skip to the next element
}else if(!$(this).find('input[name='+curname+']').is(':checked') && !$(this).closest('div').find('p').hasClass('text-danger')){
$(this).closest('div').find('p').addClass('text-danger');
}else if($(this).find('input[name='+curname+']').is(':checked') && $(this).closest('div').find('p').hasClass('text-danger')){
$(this).closest('div').find('p').removeClass('text-danger');
}else{
$(this).closest('div').find('p').removeClass('text-danger');
}
}
prevname = curname;
});
var go;
$('.radio-inline').closest('div').find('p').each(function(){
if($(this).hasClass('text-danger')){
go = false;
return false;
}else{
go = true;
}
});
if(go){
}
});
});
如果需要,请询问更多信息。我已经被这个问题困扰了一段时间,我想尽快解决它。单选按钮验证一直是我的弱点,所以今天征服它会很棒
【问题讨论】:
-
作为旁注:您应该真正了解模板机制以将您的视图与其他逻辑分开。
-
您能否更深入地了解您的意思?我很好奇
-
您到底想验证什么?只是为每个分组勾选了一个单选框?
-
是的,这是正确的,我从来没有真正擅长验证单选按钮,我想通了一次,然后有一段时间没有这样做并忘记了 XD
-
快速搜索给了我这个:smashingmagazine.com/2011/10/17/…
标签: javascript jquery validation