Авто заглавные слова - PullRequest
0 голосов
/ 08 января 2020

Как бы я go узнал, что этот скрипт должен использовать заглавную букву, если она рядом с цифрами или символами. Это мой код на данный момент. Так что если его рядом с «1» или «-», он будет выглядеть как «1A», «-A» вместо «1a», «-a»

$.fn.capitalise = function() {
  $.each(this, function() {
    var split = this.value.split(' ');
    for (var i = 0, len = split.length; i < len; i++) {
      split[i] = split[i].charAt(0).toUpperCase() + split[i].slice(1).toLowerCase();
    }
    this.value = split.join(' ');
  });
  return this;
};

$('#id1').on('input', function() {
  $(this).capitalise();
}).capitalise();

1 Ответ

0 голосов
/ 08 января 2020

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

$(function() {
  $.fn.capitalise = function() {
    //get existing value from input
    let currentValue = $(this).val();
    //apply regex replace to uppercase characters after number/symbol/whitespace
    let newValue = currentValue.replace(/[^a-zA-Z]([a-zA-Z])/g,  function(match) {
      return match.toUpperCase();
    });
    //set new value to input
    $(this).val(newValue);
  };

  $('#id1').on('input', function() {
    $(this).capitalise();
  });
  
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="id1">Type here to auto-capitalize after number/symbol/whitespace:</label>
<br/>
<input id="id1"/>

Если использование заглавных букв после пробела нежелательно, просто добавьте \s к первой части регулярного выражения:

/[^a-zA-Z\s]([a-zA-Z])/g
...