php – 在提交之前验证表单(比检查空字段更复杂)
发布时间:2020-12-13 22:13:53 所属栏目:PHP教程 来源:网络整理
导读:我有一个包含时间输入的表单(特别是开始和结束时间).当按下提交按钮时,它会进入一个php页面,将这些输入添加到数据库中.我想在允许表单提交之前检查一些事情.例如,我想确保开始时间早于(小于)结束时间.这是表格: Opens: select name="starthour1" option val
我有一个包含时间输入的表单(特别是开始和结束时间).当按下提交按钮时,它会进入一个php页面,将这些输入添加到数据库中.我想在允许表单提交之前检查一些事情.例如,我想确保开始时间早于(小于)结束时间.这是表格:
Opens: <select name="starthour1"> <option value="00">12</option> <option value="01">1</option> <option value="02">2</option> <option value="03">3</option> <option value="04">4</option> <option value="05">5</option> <option value="06">6</option> <option value="07">7</option> <option value="08">8</option> <option value="09">9</option> <option value="10">10</option> <option value="11">11</option> </select> : <select name="startminute1"> <option value="00">00</option> <option value="15">15</option> <option value="30">30</option> <option value="45">45</option> <option value="59">59</option> </select> <select name="startwhen1"> <option value="am">am</option> <option value="pm">pm</option> </select> Closes: <select name="endhour1"> <option value="00">12</option> <option value="01">1</option> <option value="02">2</option> <option value="03">3</option> <option value="04">4</option> <option value="05">5</option> <option value="06">6</option> <option value="07">7</option> <option value="08">8</option> <option value="09">9</option> <option value="10">10</option> <option value="11">11</option> </select> : <select name="endminute1"> <option value="00">00</option> <option value="15">15</option> <option value="30">30</option> <option value="45">45</option> <option value="59">59</option> </select> <select name="endwhen1"> <option value="am">am</option> <option value="pm">pm</option> </select> 我发现了如何检查单个表单元素的javascript代码,但我无法弄清楚如何在不提交的情况下组合多个.在我的php页面中,我有以下代码: $starthour1=$_POST['starthour1']; $startminute1=$_POST['startminute1']; $startwhen1=$_POST['startwhen1']; $endhour1=$_POST['endhour1']; $endminute1=$_POST['endminute1']; $endwhen1=$_POST['endwhen1']; $start_time1=$end_time1=""; if($startwhen1=="pm"){ $starthour1=$starthour1+12; } if($endwhen1=="pm"){ $endhour1=$endhour1+12; } $start_time1=$starthour1.":".$startminute1.":00"; $end_time1=$endhour1.":".$endminute1.":00"; if($end_time1=="00:00:00"){ $end_time1="23:59:00"; } echo "<br>start time is ".$start_time1; echo "<br>end time is ".$end_time1; $startnum=str_replace(":","",$start_time1); $endnum=str_replace(":",$end_time1); if($endnum<$startnum){ echo "<br>start time can't be later than end time!"; } else{ //add to database } 但是,提交后检查这些东西是没有意义的.我想如果发现错误,我可以重定向回初始页面,但这似乎并不高效. 此外,我想也许我可以在页面上有一些PHP检查有效性的形式.如果它验证,它然后发布到插入数据库的东西的PHP页面.这是否有意义,是否可能? 有更好的解决方案吗?我想有一些我可以用javascript做的事情,但我无法弄明白. 另外,我想通过输入框旁边显示的文本通知用户无效输入.一旦剩下的工作正常,我应该能够解决这个问题. 谢谢. 解决方法
让表单的onSubmit()或动作调用JavaScript函数,如下所示:
<form id="form" onSubmit="return doSubmit();" action="#"> 然后,在doSubmit()中,您可以实际执行任何验证(并且只有在它们通过时才实际提交表单) function doSubmit(){ if (validationsPass()) { $('#form').submit(); } } 要通知用户实际表单字段旁边的无效输入,您可以在每个字段旁边隐藏div或spans,如果它们未通过某种验证,则使用Javascript取消隐藏它们. if(!fieldNotValid){ $('#field-error').show(); //Or use effects like .highlight() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |