jquery начинать каждое слово с заглавной буквы - PullRequest
0 голосов
/ 17 июня 2020

У меня проблема в jquery. я хочу сделать первую букву каждого слова в полях ввода заглавными.

mycode:

function capitalize(){
        console.log($('#alertmsg').val().trim());
}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

         <label for="alertmsg"><b>Alert Message</b></label>
         <input type="text" name="alertmsg" id="alertmsg" >
         <button onClick="capitalize()"> click </button>

jquery

        console.log($('#alertmsg').val().trim()); //Hello world

что мне делать .. кто-нибудь мне поможет?

Ответы [ 5 ]

1 голос
/ 17 июня 2020

Простое регулярное выражение replace приведет вас туда:

const titleCase = (s) => s.replace(/\b\w/g, c => c.toUpperCase());

console.log(titleCase('hello world'));
0 голосов
/ 17 июня 2020

На основе ответа @Robby Cornelissen:

Код ниже будет делать следующее:

  • берет значение из поля ввода
  • обновляет первое символ каждого слова в верхнем регистре
  • наконец, обновите поле обновленным значением

function capitalize(){
  const titleCase = (s) => s.replace(/\b\w/g, c => c.toUpperCase());
  const updatedValue = titleCase($('#alertmsg').val().trim());
  $('#alertmsg').val(updatedValue);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<label for="alertmsg"><b>Alert Message</b></label>
<input type="text" name="alertmsg" id="alertmsg" >
<button onClick="capitalize()"> click </button>

Надеюсь, это поможет!

0 голосов
/ 17 июня 2020

Попробуйте следующий пример

const string = 'hello world'

function capitalize(string) {
  const words = string.split(' ');
  const output = words.map(word => {
    const firstLetter = word.substring(0, 1).toUpperCase();
    const rest = word.substring(1);  

    return `${firstLetter}${rest}`
  })

  return output.join(' ')
}

console.log(capitalize(string))

См.

0 голосов
/ 17 июня 2020

РЕДАКТИРОВАТЬ: важно подробно прочитать вопрос перед отправкой ответа;)

Мой пост может быть немного запутанным, но он работает ...

Разделите значение, используя пробелы, затем прогоните каждое значение разбитого массива через forEach l oop, найдите индекс [0] для строки значения и измените его на верхний регистр. Затем соедините оставшуюся часть строки с первой заглавной буквой.

Для отображения объедините каждое значение forEach обратно в строку с пробелом. Обрезать, чтобы удалить конечные и / или ведущие пробелы.

let $val = $('#alertmsg');
let $display = $('#display');
let values;
let output;
$val.blur(function(value) {
  let a = '';
  values = $val.val().trim().split(' ')
  values.forEach(function(v, i) {
    output = '';
    for (let n = 0; n < v.length; n++) {
      if (n === 0) {
        output += v[n].toUpperCase();
      } else {
        output += v[n];
      }
    }
    a += ' ' + output;
  })
  console.log(a.trim())
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="alertmsg"><b>Alert Message</b></label>
<input type="text" name="alertmsg" id="alertmsg">
<p id="display"></p>
0 голосов
/ 17 июня 2020

вы должны попробовать это:

function titleCase(str) {
   var splitStr = str.toLowerCase().split(' ');
   for (var i = 0; i < splitStr.length; i++) {
       // You do not need to check if i is larger than splitStr length, as your for does that for you
       // Assign it back to the array
       splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);     
   }
   // Directly return the joined string
   return splitStr.join(' '); 
}

А затем

console.log(titleCase("hello world")); //Hello World
...