我有这样的形式:
<form action="Home/Index" id="contactform" onSubmit="javascript:postContactForm();return false;">
<p>
<input class="textfield form-controld" data-val="true" data-val-length="The Name must be 50 characters or less" data-val-length-max="50" data-val-regex="The Name should not contain special characters" data-val-regex-pattern="^[A-Za-z0-9-_ ]+$" data-val-required="The Name field is required." id="Name" name="Name" placeholder="Name" type="text" value="" />
<div class="error-holder"><span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span></div>
</p>
//some more fields
</form>
简单的帖子功能:
function postContactForm() {
if (!$("#contactform").valid())
return false;
//doing post
}
我测试了它与任何浏览器(包括移动浏览器)一起使用的表单。
但是在IE8上,无论表单是否有效,浏览器只需重新加载表单+将post params添加到查询字符串中。
你如何解决这个问题?
更新
试图在IE8中添加method="POST"
still reloaded
形式{{1}}但是没有将params注入查询字符串。
答案 0 :(得分:0)
将onSubmit
属性更改为返回您的函数值。
<form action="Home/Index" id="contactform" onSubmit="return postContactForm();">
或者如果您想使用<{p>的javascript:
表示法
<form action="Home/Index" id="contactform" onSubmit="javascript: return postContactForm();">
下面的完整工作示例(在FireFox,IE7和IE8中测试)
<script type="text/javascript">
function postContactForm() {
return false;
}
</script>
<form action="Home/Index" id="contactform" onSubmit="return postContactForm();">
<p>
<input class="textfield form-controld" data-val="true" data-val-length="The Name must be 50 characters or less" data-val-length-max="50" data-val-regex="The Name should not contain special characters" data-val-regex-pattern="^[A-Za-z0-9-_ ]+$" data-val-required="The Name field is required." id="Name" name="Name" placeholder="Name" type="text" value="" />
<div class="error-holder"><span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span></div>
<input type="submit" value="Submit">
</p>
</form>
答案 1 :(得分:0)
可能你的其余代码(//doing post
)在IE8中引发错误。在这种情况下,将提交表单,因为将无法访问return false
。