我已经对我的HTML表单进行了一些javascript验证,但我还需要包含一些PHP验证,所以当用户忘记在文本输入中输入内容时,我会在HTML表单中包含所有功能的PHP验证。选择一个单选按钮。
问题是,如果用户单击“准备问题”提交按钮,那么它不会显示回声,而是提交表单,我不希望发生这种情况。我不希望在成功满足php验证之前提交表单。我需要在代码中进行哪些更改才能实现此目的:
以下是代码:
<form action="QandATable.php" method="post" id="sessionForm">
<p><strong>1: Your Assessment ID: </strong><span id="idFont"><?php echo $id; ?></span></p>
<input type='hidden' name='id' value='<?php echo $id; ?>' />
<p><strong>2: Number of Assessments you Require:</strong> <input type="text" id="sessionNo" name="sessionNum" onkeypress="return isNumberKey(event)" maxlength="5" /></p>
<p><strong>3: Duration:</strong> <input type="text" id="durationpicker" name="durationChosen" readonly="readonly" /></p>
<p><strong>4: Date:</strong> <input type="text" id="datepicker" name="dateChosen" readonly="readonly" /></p>
<p><strong>5: Start Time:</strong> <input type="text" id="timepicker" name="timeChosen" readonly="readonly" /><span class="timepicker_button_trigger"><img src="Images/clock.gif" alt="Choose Time" /></span></p>
<p><strong>6: </strong><input class="questionBtn" type="submit" value="Prepare Questions" name="prequestion" onClick="myClickHandler(); return false;"/></p> <!-- Prepare Questions here-->
</form>
<?php
if (isset($_POST['prequestion'])) {
if(empty($_POST['sessionNum'])) {
echo "Please Set the Number of Assessments";
}
elseif(empty($_POST['durationChosen'])) {
echo "Please Select your Assessment's Duration";
}
elseif(empty($_POST['dateChosen'])) {
echo "Please Select a Date";
}
elseif(empty($_POST['timeChosen'])) {
echo "Please Select a Start Time";
}
else {
?>
<script type="text/javascript">
function myClickHandler(){
if(validation()){
showConfirm();
}
}
<?php
}
}
?>
答案 0 :(得分:0)
PHP是一种服务器端脚本语言,因此在提交表单之前,您无法直接对表单进行PHP验证。
如果由于某种原因必须进行PHP验证,您可以做的是异步提交字段值(以不可见的方式)。您可以使用javascript在隐藏的iframe上使用表单数据调用GET并从单独的php页面返回错误(f ex调用/hidden/formcheck.php?sessionNum=XX&(...)并返回false或真)。
如果你真的想以这种方式做到这一点,你会更好地使用jQuery或一些类似的库,它们具有大量现成的远程URL调用功能(如jQuery的http://api.jquery.com/load/)