我有一个HTML,我想在它被提交之前验证它,并且我在验证中使用了ajax,我希望它在ajax结果为“OK”时提交表单并显示警告if else ,结果肯定是“OK”,但它没有提交表格,请帮助!!
这是我使用的HTML代码
<form action="newplan.php" onsubmit="return validateplan();" method="post">
<TABLE style="font-size: small;width: 100%;background: #7cdafe;">
<Tr>
<td>
Planer Name <input type="text" disabled value="<?=$me['name']?>">
</TD>
<td>
Title
<input type="text" id="title" name="title" placeholder="Title this plan">
</td>
<tD>
<LABEL for="month">Month</LABEL>
<SELECT id="month" name="month">
<OPTION value="0">Choose</OPTION>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</SELECT>
<LABEL for="week">Week</LABEL>
<select name="week" id="week">
<OPTION>Choose</OPTION>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</td>
</tR>
</TABLE>
<div>
<LABEL for="subdate">Submition Date</LABEL><input type="text" id="subdate" name="subdate" value='<?=date("F d,Y")?>'></input>
<input type="submit" name="go" value="Save">
<input type="test" id="clar" value="0">
<input type="submit" name="go" value="Submit">
</div>
</form>
这是js,我已经在页面的头部链接了jquery
JS
<script type="text/javascript">
function validateplan(){
var title = $("#title").val();
var month = $("#week").val();
var subdate = $("#subdate").val();
var week = $("#week").val();
$.ajax({
url: 'ajax/plan_validate.php',
data: {title: title,month: month,subdate: subdate,week: week},
success: function(data){
if (data == 'OK'){
alert("We are OK so far");
return true;
}
else
{
alert(data);
}
},
error: function(){
alert("There is something wrong");
}
});
return false;
}
</script>
答案 0 :(得分:0)
以下是您的代码正在执行的操作:
请澄清这些假设是否不正确。
validateplan()
函数。validateplan()
将表单数据的AJAX请求发送到ajax/plan_validate.php
plan_validate.php
处理输入并检查错误。回复回复。 plan_validate.php
应该做什么?只是错误检查表格?或者实际上对数据做些什么?你说:
结果肯定是“OK”,但它没有提交表格。
您是否看到了alert("We are OK so far");
?如果是,那么您提交的是表单,但仅提交给plan_validate.php
,而不是表单newplan.php
。如果您希望将表单提交给newplan.php
,那么您需要对其进行编程才能执行此操作。
表单onsubmit="return validateplan();"
中的代码告诉浏览器使用validateplan()
的返回值来决定是否提交action
属性。
validateplan()
函数的最后一行是return false;
,因此validateplan
始终返回false,表单永远不会提交。当您从成功函数中return true;
时,您只返回来自匿名函数,而不是 validateplan
函数。
如果您希望在收到newplan.php
的确定回复后将表单提交至plan_validate.php
,则需要在确定提醒后在success: function
中添加该表单。
This question是一个合理的起点,可以确定如何完成剩余的工作。既然你已经引用了jQuery(至少,这是我假设你的$
调用的用途),你可以查看[
。on()][2] and [
。submit()` ] 3帮助您使用jQuery的一些快捷方式。
注意:您可能不希望将validateplan()
更改为return true;
,因为无论来自哪个回复,您都会将表单提交至newplan.php
plan_validate.php
。这是因为您的AJAX是异步的,它通过validateplan()
在其余流程之外执行。
注2:如果您要将表单更改为onsubmit=validateplan()
而不包含return
,则某些浏览器会忽略validateplan
的返回值并始终提交表格。只是需要注意的事情。
答案 1 :(得分:0)
Ajax是异步的,因此在服务器端进行验证之前,它返回false。这就是为什么你的表格没有提交。
而不是<form action="newplan.php" onsubmit="return validateplan();" method="post">
您可以在ajax成功函数中提交表单,然后显示警报; 试试这个 : 像这样改变你的表格标签和
<form action="newplan.php" method="post" id="myform">
在ajax成功函数中调用submit
$( "#myform" ).submit();