Я получаю ошибку «объект не поддерживает этот метод или свойство» в IE8. Строка кода она имеет в виду ниже:Ошибка проверки jQuery в IE8
$('#example-advanced-form').ajaxForm({
target: '.success',
success: function() {
$('.success').fadeIn('fast');
$("#contact_form").toggle("fast");
}
});
Причина я использую это потому, что FormData
не работает под IE10.
Вот скриншот ошибки:
Вот полный скрипт ...
<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>
Я только что опубликовал полный сценарий – Amesey
ОК, но я не могу посмотреть на этот скрипт и определить проблему; вам нужно использовать инструмент отладки, чтобы увидеть, какие ошибки возникают ... Ошибки JS очень сложно отлаживать, и их очень сложно отлаживать, просто просматривая их. –
вместо того, чтобы пытаться использовать ajaxForm, есть ли другой способ, который я могу использовать jquery, чтобы отправить сообщение формы другому файлу отправки почты? В этом сообщении говорится, что форма ajax не будет работать в 8, но она также не работает в 9. http://stackoverflow.com/questions/12163558/ajax-form-does-not-work-with- internet-explorer-8-9 – Amesey