2015-01-13 3 views
0

У меня есть следующий код, чтобы автозаполнять имя пользователя из электронной почты пользователя.jQuery on Keyup до ввода специального символа

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

И, например, если пользователь начинает вводить useremail "[email protected]"

Имя пользователя должно быть введено только до "[email protected]"

Но, как я могу заблокировать текст, введенный после символа @? Так что имя пользователя заполняется только до «klajdkljsd»?

Благодаря

ответ

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

Просто что-то дополнительное ... Если предположить, что, называя его 'автозаполнения' означает, что они оба поля формы, я бы добавить условно, чтобы, если пользователь отредактировал имя пользователя, это автозаполнение перестанет происходить. – gokujou

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); 
Смежные вопросы