簡體   English   中英

Textarea中每個單詞首字母大寫的Javascript錯誤

[英]Javascript Bug in Capitalizing First Letter of Each Word in Textarea

我是一個小博主,我對 Javascript 的了解不夠。 我有兩個與在 textarea 中輸入時將每個單詞的首字母大寫相關的問題。 我在 Stack Overflow 上的一些地方找到了下面給出的 js 代碼。 它工作正常,但有一個錯誤。

問題 1:當用戶輸入單行時,它會將所有單詞大寫,但不會在每次換行后將第一個單詞大寫,或者說當用戶按 Enter 轉到下一行時,它會保持第一個字母小而不大寫。

問題 2:如果用戶在單詞前放置逗號或句號,則單詞也不大寫。

我想要的是! 在任何情況下,如果用戶在逗號、句號、連字符、感嘆號和其他基本特殊字符后沒有空格,則所有單詞都應大寫並自動在單詞前提供一個空格。

現場示例

以下是我的代碼:

 $(window).load(function() { $.fn.capitalize = 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; }; $('input#author').on('keyup', function() { $(this).capitalize(); }).capitalize(); $('textarea#comment').on('keyup', function() { $(this).capitalize(); }).capitalize(); }); $(window).load(function() { $('input#email').keyup(function() { $(this).val($(this).val().toLowerCase()); }); });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <textarea minlength="120" id="comment" name="comment" cols="45" rows="8" aria-required="true" placeholder="Shayari"></textarea>

您可以嘗試更新您的代碼如下

$(window).load(function() {

  $.fn.capitalize = function() {
    $.each(this, function() {
      var lines = this.value.split('\n');
      for (var i = 0; i < lines.length; i++) {
          var split = lines[i].split(' ');
          for (var j = 0, len = split.length; j < len; j++) {
            split[j] = split[j].charAt(0).toUpperCase() + split[j].slice(1).toLowerCase();
          }

          lines[i] = split.join(' ');
      }
      this.value = lines.join('\n');
    });
    return this;
  };

  $('input#author').on('keyup', function(e) {
    var $control = $(e.currentTarget);
    // Give space after comma, full stop, hyphen, exclamation mark 
    var newValue = $control.val().replace(/([\,\.\-\!])(\w)/g, '$1 $2');
    $control.val(newValue);
    $(this).capitalize();
  }).capitalize();

  $('textarea#comment').on('keyup', function(e) {
    var $control = $(e.currentTarget);
    // Give space after comma, full stop, hyphen, exclamation mark 
    var newValue = $control.val().replace(/([\,\.\-\!])(\w)/g, '$1 $2');
    $control.val(newValue);
    $(this).capitalize();
  }).capitalize();

  $('input#email').on('keyup', function() {
    $(this).val($(this).val().toLowerCase());
  });      

});

我在https://jsfiddle.net/r4w43L2k/5/創建了一個例子,你可以檢查一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM