#jquery #if-statement #string-length
#jquery #if-оператор #длина строки
Вопрос:
Я пытаюсь сгенерировать имена пользователей для пользователей на основе существующей ручной формулы, которую мы используем: первые 5 символов фамилии, первый инициал имени.
Просто:
$("#first_name, #last_name").keyup(function(){
var a = $("#first_name").val().substring(0, 1),
b = $("#last_name").val().substring(0, 5);
$("#username").val(b a);
});
Тем не менее, я пытался выяснить правила, когда фамилия меньше 5 символов, а затем заполнить эти недостающие символы следующими буквами их имени. И, наконец, если имя фамилия в общей сложности меньше 5 символов, просто добавьте их.
Это было что-то вроде того, над чем я работал, но это не сработало, и я не могу понять, почему:
$("#first_name, #last_name").keyup(function(){
var a = $("#first_name").val(),
b = $("#last_name").val();
if( b < 5 ) {
var c = ( 5 - b.length );
if( c > a.length ) {
var d = a.substring(0, c);
$("#username").val( b d );
} else {
$("#username").val( b a );
}
} else {
$("#username").val( b a );
}
});
Ответ №1:
Я пытался разобраться в правилах…
Ключевым моментом здесь является фамилия. У вас есть только 2 случая, и это зависит от длины фамилии.
Когда вы знаете, что это меньше 5 символов. Используйте его как есть!
И используйте его длину, чтобы вычислить, сколько символов использовать из первого имени.
$("#first_name, #last_name").keyup(function(){
var a = $("#first_name").val(),
b = $("#last_name").val();
// Last name longer than 5 chars
if( b.length >= 5 ) {
a = a.substr(0,1);
b = b.substr(0,5);
// Last name shorter than 5 chars
}else{
a = a.substr(0,(5-b.length 1)); // That is at least 1 5 possible "replacements"...
}
$("#username").val( b a );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
First name: <input type="text" id="first_name"><br/>
Last name: <input type="text" id="last_name"><br>
username: <input "type="text" id="username">
Ответ №2:
Если последнее имя меньше 5, объедините их вместе и возьмите первые 6.
Если фамилия больше 5, возьмите первые 5 от фамилии плюс первый символ имени.
$("#first_name, #last_name").keyup(function(){
var a = $("#first_name").val().trim().toLowerCase().replace( / /g, ''),
b = $("#last_name").val().trim().toLowerCase().replace( / /g, ''),
c = '';
if (!a || !b) return;
if ( b < 5 ) {
c = (b a).substring(0, 6);
} else {
c = b.substring(0, 5) a[0];
}
$("#username").val( c );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" value="" id="first_name" placeholder="First Name">
<input type="text" value="" id="last_name" placeholder="Last Name">
<div><input type="text" id="username"></div>
Комментарии:
1. спасибо вам за это, но, похоже, это не работает для пользователей с именем say: Ana Ng, где он должен выводить «ngana» вместо «nga»
2. @Ahhhhhhhhhhhhhdfgbv Добавил
toLowerCase()
пробелы и удалил пробелы.