2015-04-06 2 views
1

Я создал следующий сценарий JQuery и, похоже, работает во всех браузерах, кроме IE 8. Когда я просмотрел информацию об ошибках Internet Explorers, я вообще не получил никаких сведений об ошибке. IE просто указывает на мой файл JQuery, не указывая на строку кода, которая затронута. Какие-либо предложения? Я использую версию 1.4.4 из JQuery Мой сценарий нижеСценарий JQuery не работает в IE

$(document).ready(function() { 

     $("input[name='emailAddress']").blur(function() { 
      // Actual Email Validation function 
      $('#emailMessage').html(""); 
      var hasError = false; 
      var emailaddressVal = $("input[name='emailAddress']").val().trim(); 
      var invalidEmailAddresses = ['goddady.com', 'aol.com', 'yahoo.com', 'yahoo.fr']; 

      if(!isValidEmailAddres(emailaddressVal)) { 
       $("<span id='emailMessage' class='LV_validation_message LV_invalid'>The email provided does not contain an @ symbol</span>").insertAfter("input[name='emailAddress']"); 
       hasError = true; 
      } else { 
       emailaddressVal = emailaddressVal.split('@').slice(1)[0].trim(); 

       if($.inArray(emailaddressVal, invalidEmailAddresses) >= 0) { 
        $("<span id='emailMessage' class='validation'>The email provided is not from a business related domain. Please use an appropriate email address instead.</span>").insertAfter("input[name='emailAddress']"); 
       } else { 
        $('#emailMessage').css('display', 'none'); 
       } 
      } 
      if(hasError == true) { 
       return false; 
      } 
     }); 

     function isValidEmailAddres(emailID) { 
      var regexExp = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i); 
      return regexExp.test(emailID); 
     } 

    }); 
+3

И какая используемая версия jQuery? – Teemu

+7

@Satpal Вы имеете в виду, что jQuery 2.0 не работает в IE <9? – Teemu

+0

@Teemu Хороший вопрос Я использую версию 1.4.4 JQuery – Jimmy

ответ

3

Я заподозрить .trim(), как это не поддерживается на < = IE8. Вам будет лучше использовать jQuery.trim(), так как вы все равно используете jQuery. Например:

var emailaddressVal = $.trim($("input[name='emailAddress']").val()); 
+0

Полезно знать. Я попробую это. Благодаря! – Jimmy

+0

Так что я должен также заменить emailaddressVal = emailaddressVal.split ('@'). Slice (1) [0] .trim(); ? Потому что, когда я печатаю неверный адрес электронной почты, сообщение об ошибке электронной почты моего аккаунта invaild не отображается. – Jimmy

+1

Не нужно Я предполагаю, что значение уже обрезано. Но, не вредит попыткам и удалению позже по мере необходимости. – lshettyl

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