我的onsubmit不工作了。我的想法是放置一些必填字段,为了实现这一点,我在调用JavaScript函数的表单中使用了onsubmit方法。
这个想法是,如果所有必填字段都填好了,javascript函数将返回true,然后转到页面/control/Cadastro.php。否则,如果任何必填字段为空,它将返回false,并且不会移动到页面/control/Cadastro.php,而是停留在当前页面中,直到为true。
不幸的是,如果所有必填字段都没有像预期的那样填充,该函数会返回false,但它仍然会移动到页面/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>发布于 2012-09-27 22:15:16
您应该在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;
}发布于 2012-09-27 22:20:48
为此,您的ValidateRequiredFields函数需要返回一个布尔值。然后您应该将该方法附加到onSubmit事件。请记住,对于onsubmit,您需要使用return关键字。
此代码示例可以工作:
<!DOCTYPE html>
<html>
<head>
<script>
function ValidateRequiredFields() {
var message = new String('\nCampos obrigatórios:\n');
var flag=1;
var x=document.forms["theForm"]["nr_processoCA"].value;
if (x==null || x==""){
message += '\nNº do processo\n';
alert(message);
return false;
}
return true;
}
</script>
</head>
<body>
<form name="theForm" method="post" action="../control/Cadastro.php" onSubmit="return ValidateRequiredFields()">
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>发布于 2012-09-27 22:08:56
如果是真的,我建议放一个按钮来运行表单:
<input type='button' onclick="if (ValidateRequiredFields()) document.forms['theForm'].submit();" />仅此而已……
https://stackoverflow.com/questions/12623244
复制相似问题