#javascript #jquery #trim
#javascript #jquery #обрезать
Вопрос:
Я хочу обрезать значение (разделите начальные и конечные пробелы) и сделать первую букву в каждом слове заглавной. Когда пользователь покидает элемент (событие размытия)
Ввод HTML следующим образом
<input id="iptFirstName" name="iptFirstName" type="text"/>
Фрагмент кода JS
$(document).ready(function(){
var iptFirstName = $("#iptFirstName");
iptFirstName.blur(validateForename);
});
function validateForename(){
var firstName= $("#iptFirstName").val;
//strip leading and trailing spaces
firstName= $.trim(firstName)
//change first letter in every word to uppercase
firstName= Capital(firstName);
//update input field whit new value
$("#iptFirstName").val(firstName);
}
function Capital(eleValue) {
var eleValue;
if (eleValue != "") {
var firstLetter = eleValue.substring(0, 1).touppercase();
var restOfWord = eleValue.substring(1, eleValue.length).tolowercase();
eleValue = firstLetter restOfWord;
return eleValue;
}
}
Пожалуйста, поймите, почему это не работает, или, возможно, у вас есть лучший подход к решению этой проблемы.
Ответ №1:
$(document).ready(function(){
var iptFirstName = $("#iptFirstName");
iptFirstName.blur(validateForename);
});
function validateForename(){
var firstName= $("#iptFirstName").val();
//strip leading and trailing spaces
firstName= $.trim(firstName)
//change first letter in every word to uppercase
firstName= Capital(firstName);
//update input field whit new value
$("#iptFirstName").val(firstName);
}
function Capital(eleValue) {
var eleValue;
if (eleValue != "") {
var firstLetter = eleValue.substring(0, 1).toUpperCase();
var restOfWord = eleValue.substring(1, eleValue.length).toLowerCase();
eleValue = firstLetter restOfWord;
return eleValue;
}
}
попробуйте, это должно сработать, сделано всего несколько изменений,
var firstName= $("#iptFirstName").val;
Для
var firstName= $("#iptFirstName").val();
touppercase
Для
toUpperCase
tolowercase
йоу
toLowerCase
Ответ №2:
Вы можете попробовать это $.trim(firstName).replace(/^([a-z])|s ([a-z])/g, function ($1) {return $1.toUpperCase();})
Ответ №3:
Это сделало бы это —
$(document).ready(function() {
var iptFirstName = $("#iptFirstName");
iptFirstName.blur(function() {
$(this).val(function() {
return $.trim($(this).val()).replace(/(^[a-z]| [a-z])/g, function($0) {
return $0.toUpperCase();
})
})
});
});
Демонстрация — http://jsfiddle.net/ipr101/QvATH/1
Комментарии:
1. Большое спасибо, в вашем коде заглавными буквами указана только первая буква, но если после пробела есть другое слово, оно не будет заглавным.
2. Извините за это — возможно, уже немного поздно, но ответ обновлен.
Ответ №4:
В коде было несколько ошибок
$(document).ready(function(){
$("#iptFirstName").blur(validateForename);
});
function validateForename(){
var firstName= $("#iptFirstName").val();
//strip leading and trailing spaces
firstName= $.trim(firstName);
//change first letter in every word to uppercase
firstName= Capital(firstName);
//update input field whit new value
$("#iptFirstName").val(firstName);
}
function Capital(eleValue) {
if (eleValue != "") {
var firstLetter = eleValue.substring(0, 1).toUpperCase();
var restOfWord = eleValue.substring(1, eleValue.length).toLowerCase();
eleValue = firstLetter restOfWord;
}
return eleValue;
}
Комментарии:
1. Да, были некоторые проблемы с учетом регистра JS. Спасибо.