Javascript jQuery выделяет начальные и конечные пробелы

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

http://jsfiddle.net/b3XhL/

Комментарии:

1. Да, были некоторые проблемы с учетом регистра JS. Спасибо.