2015-10-13 4 views
0

Я хочу предотвратить использование «,» и «;» на поле ввода с JQuery. Я пытался это решение до сих пор:Предотвратить "," и ";" на поле ввода электронной почты с помощью JQuery

HTML:

<input name="txt_correu-e" type="text" id="gestio_usuaris_editaCompta_txt_correu-e" size="50" maxlength="50" class=""> 

Jquery:

$('#gestio_usuaris_editaCompta_txt_correu-e').keypress(function (e) { 
    var filter = /([,;])/; 
    var campo = $("#gestio_usuaris_editaCompta_txt_correu-e").val(); 
    if (filter.test(campo)) { 
     e.preventDefault(); 
    } 
}); 

Но не работает для меня, так как вход еще напечатать символ, а затем не даст я продолжаю писать на вкладке. Я просто хочу, чтобы входные данные не отображали эти символы, но позвольте мне продолжить написание адреса электронной почты.

ответ

1

Чтобы запретить пользователю набирать , и ;, вы можете просто сделать:

$("#target").keypress(function(event) { 
    if (event.which == 44 || event.which == 59) { 
     event.preventDefault(); 
    } 

    // other instructions 

}); 

Edit:

Чтобы подтвердить адрес электронной почты, вы можете использовать:

function is_valid_email(email) { 
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    return regex.test(email); 
} 

, который вы можете вызвать в любом необходимом событии (keyup, ...) в текстовом поле.

Вы также можете использовать HTML5 email input:

<form> 
    E-mail: <input type="email" name="email"> 
</form> 

Надежда, которая может помочь.

+0

спасибо @akmozo, что на самом деле работает, мне было интересно, как сделать эту работу обычной проверкой подлинности электронной почты с помощью reg exps, проверяя ввод в реальном времени не только, когда я нажимаю enter. – Lowtrux

+1

Это не позволяет вам поставить этот ключ на всех @Lowtrux. Здесь нет входа. –

+1

Имейте в виду, что это решение позволит пользователю копировать и вставлять «,» и «;». Если пользователь копирует список электронных писем из другого источника и вставляет его на ваш вход, он будет проходить. Здесь нет необходимости использовать jQuery, когда вы можете использовать атрибут 'pattern', чтобы указать правильный RegEx во входном элементе. – Charmander

0
$("#target").on('keyup click blur',function(event) { 
     var regex = new RegExp('^([A-Z0-9_.+-])+\@(([A-Z0-9-])+\.)+([A-Z0-9]{2,4})+$/', 'i'); 
     if(!regex.exec($(this).val())){ 
      $(this).val(""); 
      event.preventDefault(); 
    }); 

Для того, чтобы избежать вставок нежелательных символов, которые вы должны слушать KeyUp события (клавиатуры), нажмите событие (для предотвращения правой кнопки мыши и паста;: - с текстом) и размытостью события (если вход был выбранный с помощью клавиши TAB для вставки; - содержащий текст).

Для других полисов почты проверки Pls см regular-expressions.info

0

Как я уже сказал в своем комментарии, нет необходимости использовать JQuery или JavaScript, чтобы это сделать, и ограничивая вход через keyPress событие не является хорошей практикой, так как каждый может копировать и вставлять контент (даже с «злыми» намерениями).

Следующее решение позволит использовать любые символы, кроме «,» и «;». Имейте в виду, что этого недостаточно, чтобы гарантировать, что адрес электронной почты действительно, конечно.

<form> 
    <input type="text" pattern="^[^,;]*$" required/> 
    <input type="submit"> 
</form> 

http://jsfiddle.net/parvmck7/

Позвольте мне знать, если у вас есть сомнения.

ОБНОВЛЕНИЕ: Я не знал, что вам нужно, чтобы это было совместимо с IE8. Если это так, вы можете попробовать любой из HTML5 Polyfills (https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#web-forms). В противном случае JavaScript будет.

+0

Спасибо @Charmander, но у меня есть OP также в IE8, и это решение не будет работать для этого браузера, поэтому я должен использовать JQuery – Lowtrux

+0

Конечно, пожалуйста обновите свой вопрос, потому что это ключевой момент для обеспечения адекватного и полезного ответа. – Charmander

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