У меня такая форма:
<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 в строку запроса.
Как вы это исправите?
UPDATE: пытался добавить method="POST"
в том случае, когда форма still reloaded
в IE8, но без ввода параметров в строку запроса.
Возможно, остальная часть вашего кода (//doing post
) вызывает ошибку в IE8. Форма будет представлена в этом случае, поскольку return false
не будет достигнут.
Измените атрибут onSubmit
чтобы вернуть значение вашей функции.
<form action="Home/Index" id="contactform" onSubmit="return postContactForm();">
Или, если вы хотите использовать 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>
!$("#contactform").valid()
возвращает false
и запустите вашу разметку через валидатор, чтобы убедиться, что он не поврежден.
</from>
на</form>