IE8只是重新加载页面而不是ajax帖子

时间:2014-01-04 10:57:10

标签: 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 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注入查询字符串。

2 个答案:

答案 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