2015-11-27 2 views
-1

У меня есть javascript, который проверяет электронные письма, но у некоторых клиентов возникают проблемы с ним, если они помещают пробел в конец своего адреса электронной почты и не понимают его. Я искал другие решения в stackoverflow и пытался использоватьПроверка правильности электронной почты для разрешения пробелов

$.trim($(element).valid()); 

но это не сработало. Вот код, который я использую ниже: -

  <script type="text/javascript"> 
      $('#form1').validate({ 
       onfocusout: function (element) { 
        $(element).valid(); 
       }, 
       rules: { 
        FirstName: 'required', 
        SecondName: 'required', 
        Email: { 
          required: true, 
          email: true 
         }, 
        reEmail: { 
          required: true, 
          email: true, 
          equalTo: "#Email" 
         }, 
        address: 'required', 
        Town: 'required', 
        County: 'required', 
        Phone: 'required', 
        Mobile: 'required', 
        reMobile: { 
          required: true, 
          equalTo: "#Mobile" 
         }, 
       }, 
       messages: { 
        FirstName: 'Please enter your firstname', 
        SecondName: 'Please enter your secondname', 
        Email: 'Please enter a valid email address', 
        reEmail: 'Email addresses do not match, please retype email address again', 
        address: 'Please enter address', 
        Town: 'Please enter town', 
        County: 'Please select county', 
        Phone: 'Please enter phone number', 
        Mobile: 'Please enter mobile number', 
        reMobile: 'Mobile numbers do not match, please retype mobile number again', 
       } 
      }); 
+0

Пожалуйста, форматировать код, чтобы сделать его доступным для чтения. –

+0

В чем проблема? это ошибка проверки? Потому что тогда вы должны проверить строчную строку, а не обрезать проверенную строку, как вы сейчас делаете – Aaron

+0

, она не дает ошибку, но если в конце есть место, мы все равно получаем сообщение: «Пожалуйста, введите действительный адрес электронной почты» – user3816287

ответ

1

Вы не должны проверять электронные письма с помощью регулярного выражения.

Дэвид Селис упоминает об этом на его blog:

Разделах 3.2.4 и 3.4.1 RFC идти в требования о том, как адрес электронной почты должен быть отформатирован и, ну, там не так много не может работать в вашем адресе электронной почты, когда задействуются котировки или обратные слэши. Локальная строка (часть адреса электронной почты, которая предшествует @) может содержать любой из этих символов:! $ & * - =^`| ~ #% '+ /? _ {}

Но угадайте, что? Вы можете использовать практически любой персонаж, которого хотите, если вы избежите его, окружив его в кавычки. Например, «Посмотрите на все эти пространства!» @ Example.com - действительный адрес электронной почты. Ницца.

Таким образом, в значительной степени единственным действительным требованием для правильного письма является символ @.

Вместо этого вы должны просто отправить им электронное письмо с подтверждением.

Если вам нужно удалить пробелы в конце строки, используйте trim(), но помните письма могут иногда содержать пробелы:

" test ".trim()     //=> "test" 
"  test  ".trim()  //=> "test" 
" trim() is pretty cool".trim() //=> "trim() is pretty cool" 
+0

Как я сказал ранее, я пробовал $ .trim ($ (element) .valid()); но он, похоже, не работает, может ли кто-нибудь сказать мне, как реализовать обрезку функции выше? – user3816287

+0

Я не получил ответа на свой вопрос – user3816287

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