Javascript IE8只是重新加载页面,而不是ajax帖子
我有这样的表格:Javascript IE8只是重新加载页面,而不是ajax帖子,javascript,jquery,html,post,internet-explorer-8,Javascript,Jquery,Html,Post,Internet Explorer 8,我有这样的表格: <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 l
<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>
我测试了它在任何浏览器(包括移动浏览器)上使用的表单
但在IE8上,无论表单是否有效,浏览器都只需重新加载表单并将post参数添加到查询字符串中
你怎么解决这个问题
更新:
在这种情况下,尝试添加method=POST表单仍在IE8中重新加载,但没有向查询字符串中注入参数。更改onSubmit属性以返回函数的值
<form action="Home/Index" id="contactform" onSubmit="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>
也许//doing post的其余代码在IE8中抛出了一个错误。在这种情况下,表单将被提交,因为无法返回false。在real site上将表单标签巧妙地关闭到@Anup,这是正确的,因此我也在这里修复了它。我没有在[event]=。。。很长一段时间以来,我无法判断以下内容是否在IE中存在问题,但您不需要javascript:因为已经知道它是javascript,我甚至不知道javascript:是否在该位置有效。如果只写onSubmit=postContactForm,问题是否仍然存在;返回false@t、 侄女,这是个可怕的建议。OP正在使用的jQuery已经跨浏览器规范化了事件。OP,您使用的是哪个版本的jQuery?@BenjaminGruenbaum我知道OP使用的是jQuery,但是作为onSubmit=javascript:postContactForm;返回false;在发布的代码中使用,而不是jQuery。快速检查将删除javascript:。如果仍然失败,则很可能在postContactForm中发生异常。请查看更新。如果它仍然不起作用,请确保$contactform.valid返回false,并通过验证器运行您的标记以确保其格式正确。
<form action="Home/Index" id="contactform" onSubmit="javascript: return postContactForm();">
<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>