如果没有答案,如何防止提交表单的最后一个问题
Posted
技术标签:
【中文标题】如果没有答案,如何防止提交表单的最后一个问题【英文标题】:How to prevent submit last questionof a form if there is no answer 【发布时间】:2015-07-04 16:20:42 【问题描述】:我有一份带有问题的调查表。首先,我隐藏所有问题,然后使用“下一步”按钮依次显示。我已经进行了验证,它有效,但仅对于最后一个问题它不起作用。如果有人没有启用 javascript,我还提供了 php 验证。现在,当您没有为最后一个问题选择答案时,它不会提交表单,而是返回到调查的第一个问题,您必须再次选择它们。那是我的问题 - 如何验证最后一个问题?这是我的代码:
$(function ()
$( document ).ready(hideAllRows);
$( document ).ready(showFirst);
$('#button').hide();
);
function hideAllRows()
$('#questionsTable tr').each(function()
$(this).hide();
);
$(function ()
$("#next").click(showNextQuestion);
);
var currentInd = 1;
var prevInd = 1;
function showNextQuestion()
$(function ()
var indId = "#"+currentInd;
prevInd = currentInd - 1;
var prevId = "#"+prevInd;
//validation
var isAnyClicked = false;
if ($(prevId + " input[type='radio']:checked").val())
isAnyClicked = true;
if(currentInd > 0 && currentInd != $('#questions_count').val() && isAnyClicked == false)
alert('Моля, отговорете!');
else
//hide previous question
$(prevId).hide();
//show next question
var indId = "#"+currentInd;
$(indId).show();
currentInd++;
if(currentInd == $('#questions_count').val())
$('#button').show();
$("#next").hide();
);
function showFirst()
$(function ()
$('#0').each(function()
$(this).show();
);
);
.
<?php
$att=array('id'=>'form');
echo form_open('index/survey_fill/' .$survey_id .'/'. $question_id , $att); ?>
<input type='hidden' name='questions_count' id='questions_count' value='<?php echo count($question); ?>' />
<table id='questionsTable' >
<thead>
<tr><th>Question</th></tr>
</thead>
<tbody>
<?php
echo validation_errors();
$index = 0;
foreach ($question as $row)
echo "<tr id='$index'>";
$index++;
?>
<td>
<?php echo "$row->question"; ?><br/>
<?php echo "<input type='hidden' name='question_id' value='$row->question_id' />"; ?>
<?php
$data=array(
'name' => 'answer['.$row->question_id.']',
'value' => '5',
'class' => 'answer'
);
echo "<input type='hidden' name='survey_id' value='$row->survey_id'>";
echo form_radio($data);
echo " 5 ";
$data=array(
'name' => 'answer['.$row->question_id.']',
'value' => '4',
'class' => 'answer'
);
echo form_radio($data);
echo "4";
</td></tr>
<?php
?>
</table>
<?php echo "<input type='hidden' name='question_id' value='$row->question_id' />"; ?>
<?php echo '<input type="submit" id="button" name = "submit" value="Submit" class="btn btn-success">';
?>
<input type="button" id="next" name = "next" value="Next" class="btn btn-success">
</form>
</div>
</body>
我试过这个:
$(document).ready(function()
var currentInd=1;
$('form').on('submit', function(e)
isAnyClicked = false;
if (currentInd = $('#questions_count').val() &&
($(currentInd + " input[type='radio']:checked").val()))
isAnyClicked = true;
$(currentInd ).hide();
alert(" answer selected");
if (currentInd = $('#questions_count').val() && isAnyClicked == false)
$('tr' + currentInd).css( display: 'block' );
e.preventDefault();
alert("select answer");
currentInd++;
);
);
它阻止表单提交,但即使我选择了答案,表单也不会提交。如果您选择了答案,如何提出第一个条件,表格提交?它总是运行第二个条件并且表单不提交。谢谢!
【问题讨论】:
【参考方案1】:您可以使用以下代码阻止提交表单:
$(document).ready(function()
$('form').on('submit', function(e)
// validation code here
if(!AllFieldsAreValid)
e.preventDefault();
);
);
当所有字段填写正确与否时,您可以将 AllFieldsAreValid 定义为 True 或 False。
【讨论】:
表单没有发送,但它再次向我展示了第一个问题。在我的情况下,如何坚持最后一个问题?最后一个问题是 if( currentInd = $('#questions_count').val()) 我无法对其进行验证。 我找不到 foreach ($question as $row) 结束的位置。我认为您可以使用 PHP 和可见的 html 代码编写所有代码。然后使用 Jquery 隐藏/显示不需要的部分。 我编辑了我的问题。即使您选择了最后一个问题的答案,现在表单也不会提交。如果您选择了最后一个问题的答案,如何提交表单? :) 我认为 它也在foreach后面question"; ?> .现在的问题是,即使您选择答案,它也不会提交表单。我认为这个 if 不运行: if( currentInd = $('#questions_count').val() && ($(currentInd + " input[type='radio']:checked").val())) isAnyClicked =真; $(currentInd).hide();警报(“答案”);以上是关于如果没有答案,如何防止提交表单的最后一个问题的主要内容,如果未能解决你的问题,请参考以下文章