2014-12-03 2 views
0

Я использую jquery для отправки формы. Работает отлично во всех браузерах, кроме IE, IE, похоже, не собирает «предотвращать дефолт», поскольку браузер направляет «beta.php». Вот мой кодJQuery Post не работает с IE8 + 9

$(document).ready(function(){ 
     $("#betaform").submit(function(e){ 
      event.preventDefault(); 
      $.ajax({ 
       url: "beta.php", 
       type: "POST", 
       data: $(this).serialize(), 
       success: function(data){ 
        content = "<H2>Thank you, data received</H2>"; 
        $("#betaform").empty().append(content); 
       } 

      }); 
     }); 

    }); 
+1

использования 'e.preventDefault();' поскольку вы передали 'e' через функцию. – Albzi

+0

Возможный дубликат http://stackoverflow.com/questions/1000597/event-preventdefault-function-not-working-in-ie – meskobalazs

+0

Также это может помочь http://stackoverflow.com/questions/1357118/event-preventdefault- vs-return-false –

ответ

2

Вместо использования event.preventDefault(); используйте e.preventDefault().

Вы уже прошли через e в функции:

$("#betaform").submit(function(e){ 
          ^here 

Так что либо изменить e к event или event к e.

Зак также указал, что return false; также может быть включен.

Удостоверьтесь, что если вы включили return false, он идет в нижней части функции.

$(document).ready(function(){ 
    $("#betaform").submit(function(e){ 
     e.preventDefault(); 
     $.ajax({ 
      url: "beta.php", 
      type: "POST", 
      data: $(this).serialize(), 
      success: function(data){ 
       content = "<H2>Thank you, data received</H2>"; 
       $("#betaform").empty().append(content); 
      } 

     }); 
     return false; // here 
    }); 

}); 
+0

Также может захотеть вернуть false слишком –

+0

Спасибо @ZachLeighton, я обновил свой ответ. :) – Albzi

+0

return false is/was не нужно. – epascarello

0

Мы используем эту функцию для кросс-браузерной поддержки, поскольку event.preventDefault() не существует в более ранней версии IE.

function PreventDefault(event) { 
    event.preventDefault ? event.preventDefault() : event.returnValue = false; 
} 
+0

Это НЕ нужно с jQuery ... и это не проблема. – epascarello

0

JavaScript отправить событие не пузырь в Internet Explorer. Однако сценарии, которые полагаются на делегирование событий с событием отправки , будут последовательно работать в браузерах по состоянию на jQuery 1.4, который имеет , нормализовал поведение события.

Формы и их дочерние элементы не должны использовать имена или идентификаторы ввода, которые конфликтуют со свойствами формы, такими как подача, длина или метод. Конфликты имен могут вызывать сбивающие ошибки. Для получения полного списка правил и проверить разметку для этих проблем

из jQuery API

Go и проверить все теги внутри формы и проверки атрибутов, имеющих значение (представить, длину, или метод) и переименовать атрибуты на что-то вроде:

<input type="submit" id="submit" name="submit" /> 

в

<input type="submit" id="submision" name="valid" />