在键入特殊字符之前在Keyup上使用jQuery

时间:2015-01-13 20:51:23

标签: jquery

我有以下代码从用户电子邮件中自动填充用户名。

  $("#useremail").keyup(function () {
    $('#username').val($('#useremail').val()).change();
  });

并且,例如,如果用户开始键入useremail“klajdkljsd@gmail.com”

用户名应仅输入“klajdkljsd@gmail.com”

但是,如何阻止在@符号后输入的文本?所以用户名只填充到“klajdkljsd”?

由于

2 个答案:

答案 0 :(得分:3)

试试这个:

$('#useremail').on('keyup', function () {
    var user_email = $(this).val().split('@');  // Splits the user_email at the @ char
    var user_name = user_email[0];  // Gets the first key in the array of the splitted items
    $('#username').val(user_name); // Sets the value of #username to user_name
});

或者像这样 - 同样的事情,但代码更少:

$('#useremail').on('keyup', function () {
    $('#username').val($(this).val().split('@')[0]);
});

答案 1 :(得分:0)

我会使用模式属性和一些JS修改。查看演示:http://codepen.io/zvona/pen/LEWZOW

HTML:

<p>Username: <input type="text" id="username" pattern="[a-z0-9.]*" /></p>
<p>E-mail: <input type="email" id="email" /></p>

JS:

document.querySelector("#email").addEventListener("keyup", function() {
  var username = document.querySelector("#username");
  var pattern = new RegExp(username.getAttribute("pattern"), "gi");

  username.value = pattern.exec(this.value);
}, false);