2014-10-10 5 views
0

Я получаю ошибку «объект не поддерживает этот метод или свойство» в IE8. Строка кода она имеет в виду ниже:Ошибка проверки jQuery в IE8

$('#example-advanced-form').ajaxForm({ 
     target: '.success', 
     success: function() { 
      $('.success').fadeIn('fast'); 
      $("#contact_form").toggle("fast"); 
     } 
}); 

Причина я использую это потому, что FormData не работает под IE10.

Вот скриншот ошибки:

enter image description here

Вот полный скрипт ...

 <script type="text/javascript">  

     var form = $("#example-advanced-form").show(); 


      $('#role').validate({ // initialize the plugin 
       rules: { 
        role: { 
         required: true, 
        } 
       } 
      }); 

     form.steps({ 
      headerTag: "h3", 
      bodyTag: "fieldset", 
      transitionEffect: "slideLeft", 

      onStepChanging: function (event, currentIndex, newIndex) 
      { 
       // Allways allow previous action even if the current form is not valid! 
       if (currentIndex > newIndex) 
       { 
        return true; 
       } 


       // Needed in some cases if the user went back (clean up) 
       if (currentIndex < newIndex) 
       { 
        // To remove error styles 
        form.find(".body:eq(" + newIndex + ") label.error").remove(); 
        form.find(".body:eq(" + newIndex + ") .error").removeClass("error"); 
       } 
       form.validate().settings.ignore = ":disabled,:hidden"; 
       return form.valid(); 
      }, 

      onStepChanged: function (event, currentIndex, priorIndex) 
      { 
       // 
       if (currentIndex === 2 && $("input:radio[name='workfor']").is(":checked")) 
       { 
        form.steps("next"); 
       } 

      }, 

      onFinishing: function (event, currentIndex) 
      { 
       form.validate().settings.ignore = ":disabled"; 
       return form.valid(); 
      }, 

      onFinished: function (event, currentIndex) 
      { 



       if(navigator.appVersion.indexOf("MSIE 8.")!=-1 || navigator.appVersion.indexOf("MSIE 9.")!=-1) { 

        //alert("old IE!"); 

        // bind 'myForm' and provide a simple callback function 



       $('#example-advanced-form').ajaxForm({ 
        target: '.success', 
        success: function() { 
        $('.success').fadeIn('fast'); 
        $("#contact_form").toggle("fast"); 
        } 
       }); 


       } else { 
       //alert("Not old IE!"); 



       //data to be sent to server   
       var m_data = new FormData();  
       m_data.append('name', $('input[name=name]').val()); 
       m_data.append('number', $('input[name=number]').val()); 
       m_data.append('email', $('input[name=email]').val()); 
       m_data.append('workfor', $('input[name=workfor]:checked').val()); 
       m_data.append('role', $('select[name=role]').val()); 
       m_data.append('cv', $('input[name=cv]')[0].files[0]); 
       m_data.append('coverletter', $('textarea#coverletter').val()); 



       //instead of $.post() we are using $.ajax() 
       //that's because $.ajax() has more options and flexibly. 
       $.ajax({ 
       url: 'contact_me.php', 
       data: m_data, 
       processData: false, 
       contentType: false, 
       type: 'POST', 
       dataType:'json', 
       success: function(response){ 
        //load json data from server and output message  
        if(response.type == 'error'){ //load json data from server and output message  
         output = '<div class="error">'+response.text+'</div>'; 
        }else{ 
         output = '<div class="success">'+response.text+'</div>'; 
         $("#contact_form").toggle("fast"); 
        } 
        $(".form_message").hide().html(output).slideDown(); 
       } 
       }); 

      }//END browser check coniditonal statement 


      } 

     }).validate(); 


     </script> 

ответ

1

$.ajaxForm не является стандартным методом JQuery; скорее всего, скрипт, ссылающийся на это добавление, терпит неудачу или находится в неправильном порядке. Если это не удается, это может быть неправильное имя или местоположение файла сценария или ошибка на странице или в том плагине, который вызывает ее. Использование инструмента отладки поможет выявить проблему (инструментарий разработчика IE, firefox с firebug, хром с его инструментами dev или firebug).

+0

Я только что опубликовал полный сценарий – Amesey

+0

ОК, но я не могу посмотреть на этот скрипт и определить проблему; вам нужно использовать инструмент отладки, чтобы увидеть, какие ошибки возникают ... Ошибки JS очень сложно отлаживать, и их очень сложно отлаживать, просто просматривая их. –

+0

вместо того, чтобы пытаться использовать ajaxForm, есть ли другой способ, который я могу использовать jquery, чтобы отправить сообщение формы другому файлу отправки почты? В этом сообщении говорится, что форма ajax не будет работать в 8, но она также не работает в 9. http://stackoverflow.com/questions/12163558/ajax-form-does-not-work-with- internet-explorer-8-9 – Amesey