IE8 просто перезагружает страницу вместо поста ajax

0

У меня такая форма:

    <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, но без ввода параметров в строку запроса.

  • 0
    Тщательно закройте тег формы </from> на </form>
  • 0
    @Anup на реальном сайте это правильно, поэтому я исправлю это и здесь
Показать ещё 4 комментария
Теги:
post
internet-explorer-8

2 ответа

0

Возможно, остальная часть вашего кода (//doing post) вызывает ошибку в IE8. Форма будет представлена в этом случае, поскольку 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
    нет, уже пробовал
  • 0
    Пожалуйста, смотрите обновление. Если он все еще не работает, убедитесь, что !$("#contactform").valid() возвращает false и запустите вашу разметку через валидатор, чтобы убедиться, что он не поврежден.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню