2017-01-25 16 views
-3

私は小さなブロガーであり、Javascriptに関する十分な知識はありません。 私は、テキストエリアに入力する際に​​各単語の最初の文字を大文字にするという2つの問題があります。いくつかはどこでスタックオーバーフローで私は下に与えられたjsコードを見つけました。うまくいっていますが、そこにはバグがあります。Javascript Textareaの各単語の最初の文字を大文字にする際の不具合

問題1: それはすべての単語を大文字が、それはすべての改行の後の最初の単語を大文字にしたり、ユーザーが次の行に移動します、それは小さな最初の文字ではなく保持当たるとは言っていない場合には、単一の行にユーザタイプ大文字にする

問題2: 単語の直前にカンマまたは完全な停止記号を置くと、単語も大文字に変換されません。

私が欲しいもの!すべての単語は大文字にする必要があります。ユーザーがカンマ、完全停止、ハイフン、感嘆符、およびその他の基本特殊文字の後にスペースを入れないと、単語の前にスペースが自動的に入ります。続き

Live Example

は私のコードです:

$(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>

+1

JavaまたはJavascript? – Rajesh

+1

はい、ブランクだけに分割するとどうなりますか。あなたは何を解決しようとしましたか? – Bergi

+0

@Bergi JavaScriptに関する知識はまだありませんか?私は専門家の助けが必要です。 – Tejinder

答えて

0

あなたは私が例を作成しました

$(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/、あなたはそれをチェックすることができます。

+0

非常にTrungありがとう、それは素晴らしい仕事です。私は本当にあなたの助けを感謝します。 – Tejinder

+0

このコードは機能しません。関数には 'e'がありません。 jQueryを多用しないでください。単に 'var newValue = this.value。...;を実行してください。 this.value = newValue; 'あるいは、それをすべてのイベントハンドラで繰り返すのではなく、 'capitalize'メソッドに移す方が良いでしょう。 – Bergi

+0

@Bergiしかし、うまくいきました、私はそれを更新しました、上記の問題のリンクを確認してください。何か問題がある場合は、コード全体をクリアしてください。 – Tejinder

関連する問題