2014-01-04 4 views
0

У меня есть такой вид:IE8 просто перезагружает страницу вместо Аякса пост

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

Простой пост Funciton:

function postContactForm() { 

     if (!$("#contactform").valid()) 
      return false; 

     //doing post 
    } 

Я проверил форму она работает с любым браузером, включая мобильные браузеры.

Но на IE8 независимо от того, какая форма действительна или нет, браузер просто перезагружает форму + добавляет post params в строку запроса.

Как вы это исправите?

UPDATE: пытается добавить method="POST" в этом случае форма still reloaded в IE8, но без инъекций Params в строки запроса.

+0

Закрыть Форма тега красиво '' в '' – Anup

+0

@Anup на реальном сайте, что это правильно, так что я исправить здесь, а – sreginogemoh

+0

я не использовал 'на [событие] = ...' в течение длительного времени больше, поэтому я не могу сказать, может ли быть проблема в IE, но вам не нужен «javascript:» там, потому что уже известно, что это javascript (я даже не знаю, есть ли javascript: 'действует в этом месте). Проблема остается, если вы просто пишете 'onSubmit =" postContactForm(), return false; "?? –

ответ

0

Изменить атрибут 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> 
+1

нет, уже пробовал, что – sreginogemoh

+0

См. обновление. Если он все еще не работает, убедитесь, что '! $ (" # Contactform "). Valid()' возвращает 'false' и запускает разметку через валидатор, чтобы убедиться, что он не искажен. –

0

Возможно, остальная часть вашего кода (//doing post) выдает ошибку в IE8. Форма будет отправлена ​​в этом случае, так как return false не будет достигнута.

Смежные вопросы