我的投诉不起作用我的想法是放置一些强制性字段,为了实现这一点,我在
HTML中的表单中使用onsubmit方法,这个方法称为
JavaScript函数.
这个想法是如果所有必填字段都被填写,JavaScript函数将返回true,并且将转到page /control/Cadastro.PHP页面.否则,如果任何必填字段为空,它将返回false,并且不会移动到page /control/Cadastro.PHP,保持在当前页面,直到为true.
不幸的是,如果所有必填字段都没有按预期填写,那么函数确实返回false,但是它仍然移动到page /control/Cadastro.PHP,即使不是.
我要切断一些代码,使我的观点觉察到.
<!DOCTYPE html> <html> <head> <script> function ValidaterequiredFields() { var message = new String('\nCampos obrigatórios:\n'); var flag=new Boolean(1); var x=document.forms["theForm"]["nr_processoCA"].value; if (x==null || x==""){ message += '\nNº do processo\n'; flag = new Boolean(0); } if (flag == false){ alert(message); } return flag; } </script> </head> <body> <form name="theForm" onsubmit="return ValidaterequiredFields()" method="post" action="../control/Cadastro.PHP"> Nº do Processo: <br> <input type="text" name="nr_processoCA" class="input-xlarge"> <br> <div class="row-fluid" style="text-align:center;"> <input type="submit" class="btn btn-primary btn-large" value="Gravar"> </div> </form> </body> </html>
解决方法
你应该在你的onsubmit函数中使用preventDefault.我修改了你的代码:
function ValidaterequiredFields() { var message = new String('\nCampos obrigatórios:\n'); var flag=new Boolean(1); var x=document.forms["theForm"]["nr_processoCA"].value; if (x==null || x==""){ message += '\nNº do processo\n'; flag = new Boolean(0); } if (flag == false){ if(event.preventDefault){ event.preventDefault(); }else{ event.returnValue = false; // for IE as dont support preventDefault; } alert(message); } return flag; }