2015-10-13 73 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 

}); 

编辑:

要验证电子邮件地址,你可以使用:

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); 
} 

您可以在任何需要的事件(密码,...)中调用您的文本字段。

您还可以使用HTML5 email input

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

希望能有所帮助。

+0

感谢@akmozo实际工作,我想知道如何使用reg exps进行常规电子邮件验证,不仅在我输入时实时检查输入。 – Lowtrux

+1

这不允许您在@Lowtrux中放置该密钥。这里没有进入。 –

+1

请记住,此解决方案将让用户复制并粘贴“,”和“;”。如果用户从其他来源复制电子邮件列表并粘贴到您的输入中,它将通过。 当您可以使用'pattern'属性在输入元素中指定正确的RegEx时,无需在此处使用jQuery。 – 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键选择以粘贴;: - 包含文本)。

对于其他邮件验证策略请参见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,但我必须也在IE8 OP,这个解决方案不会为那个浏览器工作这就是为什么我必须使用JQuery – Lowtrux

+0

当然,请更新你的问题,因为这是一个关键点,以提供充分和有用的答案。 – Charmander