Сделать заглавной последнюю букву в строке (с буквами и цифрами) с помощью jQuery

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

$('li.capitalize input').keyup(function(event) {
    var textBox = event.target;
    var start = textBox.selectionStart;
    var end = textBox.selectionEnd;
    textBox.value = textBox.value.charAt(0).toUpperCase() + textBox.value.slice(1);
    textBox.setSelectionRange(start, end);
});

Кроме того, теперь мне нужно сделать заглавной букву в определенной позиции (не первой букве) в строке, состоящей из букв и цифр.

Например: Da1234Z Мне нужно использовать заглавные буквы D и Z.

Как я могу это сделать?


person maelga    schedule 04.10.2016    source источник
comment
Может быть, я параноик, но это очень похоже на домашнее задание.   -  person MageeWorld    schedule 04.10.2016
comment
Итак, что если строка 23fz980q7? Вы хотите использовать заглавные буквы F и Q?   -  person Jonathan M    schedule 04.10.2016
comment
@MageeWorld, мы разрешаем домашнюю работу. :)   -  person Jonathan M    schedule 04.10.2016


Ответы (2)


Вы можете использовать эту функцию, чтобы сделать n-й символ строки заглавной:

function capitalizeNth(text, n) {
    return (n > 0 ? text.slice(0, n) : '') + text.charAt(n).toUpperCase() + (n < text.length - 1 ? text.slice(n+1) : '')
}

Если вы знаете, что n не может быть отрицательным, вы можете даже сократить его до:

function capitalizeNth(text, n) {
    return text.slice(0,n) + text.charAt(n).toUpperCase() + text.slice(n+1)
}
person mwoelk    schedule 04.10.2016

Спасибо вам всем. Я получил заглавную 7-ю букву следующим образом:

<script>
jQuery.noConflict();
jQuery(document).ready(function($) {
$('li.capitalize input').keyup(function(event) {
var textBox = event.target;
var start = textBox.selectionStart;
var end = textBox.selectionEnd;
textBox.value = textBox.value.slice(0,7) + textBox.value.charAt(7).toUpperCase() + textBox.value.slice(8);
textBox.setSelectionRange(start, end);
});
});
</script>
person maelga    schedule 07.10.2016