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>