2013-02-14 4 views
0

Я использую следующий код, чтобы загладить первую букву, введенную в текстовое поле. Проблема в том, что когда вы переходите в другое текстовое поле, затем возвращаете назад и вводите что-то, оно не будет удалять то, что есть .. оно добавляет то, что вы набираете.Проблема с заглавной буквой первого слова

Можно ли это исправить?

$(function() { 
    $('.userBox').on('DOMAttrModified textInput input keypress paste focus', 
     function (e) { 
     $(this).val($(this).val().slice(0, 1).toUpperCase() + 
       $(this).val().slice(1)); 
     }); 
}); 

Демо: http://jsfiddle.net/VBXbz/8/

+0

Должен ли он быть заглавной, или просто представил, как будто это были капитализированы? Кроме того: не «текстовое поле» (нет такого элемента), это * либо * текстовый ввод (или 'input' типа' type = text'), либо это 'textarea'. Если это презентация, всегда есть CSS: 'textarea: first-letter {text-transform: uppercase; } '. –

+0

Я бы использовал css text-transforms, но мне нужен конец сервера заглавными. – 2013-02-14 19:33:31

+1

Затем закрепите серверную часть или в событии отправки 'form'; это проще (и помимо манипуляций с пользователем в этой точке). –

ответ

0

Я бы просто связать фокус на другую функцию, которая очистит содержимое поля ввода. Как так:

$('.userBox').on('focus', function (e) { 
    $(this).val(""); 
}); 

Тогда вы по существу имеют http://jsfiddle.net/KWRef/.

Если я пропустил какой-то момент, который вы хотели сделать?

1
<script type="text/javascript" language="javascript"> 
    function Capitalize(id) { 
     var txt = document.getElementById(id); 
     txt.value = txt.value.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); 
    } 
</script> 

Sarath @ f1