0

ユーザーがテキスト領域に最大文字数 (40Char) を入力するように制限しています。のイベントで以下のJS関数を呼び出しています。onKeyUptextarea

しかし、40文字を超えるコンテンツをコピーして貼り付けると、テキストエリアでキーアップ/ダウンを行うまでポップアップ(アラート)が表示されません。

function checkLength(textBox, e, maxLength) {
  if (textBox.value.length > maxLength - 1) {        
     alert("* You have reached max limit ");
     textBox.value = textBox.value.substr(0, maxLength);
  }
  else {
     alert(maxLength - textBox.value.length + " characters remaining");
  }
}

keyup/downに貼り付けた後にアラートを取得する方法はありtextareaますか?

4

5 に答える 5

1

asp Textbox があるとします。次に示すように、"OnPaste" イベントを使用できます。

   <asp:TextBox TextMode="MultiLine" runat="server" ID="txtComment_c" 
    onpaste="return maxLengthPaste(this, 40)" MaxLength="40"></asp:TextBox>

最初にコンテンツを貼り付ける前に、既に占有されている長さを確認する必要があります。次に、window.clipboard.getdata.length により、貼り付けようとしているデータの長さが得られます。以下のコードを検討してください。

   function maxLengthPaste(field, maxChars) {

        if ((field.value.length + window.clipboardData.getData("Text").length) > maxChars) {
            alert("Cannot have more than " + maxChars + " Characters");
            return false;
        }

    }
于 2014-05-29T11:24:02.400 に答える
1

余分な文字をその場でトリミングしたい場合、別の可能な方法は次のとおりです。

  • 40 を超える文字をトリミングするトリム関数を作成します。たとえば、 - trimText().
  • onFocus - 500 ミリ秒ごとsetIntervalに呼び出す関数を追加します。trimText()
  • onBlur -setInterval関数をクリアしてtrimText()、もう一度実行します。
  • onChange -trimText()もう一度実行します。必要に応じて、これは追加のチェックになります。

要件に基づいて、期間を更新できます。

サンプル: http://jsfiddle.net/codebombs/AyLdW/

アラート メッセージを 1 つだけ表示する場合は、 を使用しますonchange

デモ: http://jsfiddle.net/codebombs/3Jdvg/1/

于 2012-07-30T13:35:53.113 に答える
1

おそらくそのためにonChangeイベントを使用する必要があります

于 2012-07-30T13:29:56.090 に答える
0

何かのようなもの:

$('#textbox1').on('change', function() {
    var currentText = $(this).val();
    if(currentText.length > 40)
        $(this).val(substr(currentText,0,40));
});

省略記号 (...) を追加するEllipsisプラグインもあります。

于 2012-07-30T13:37:05.580 に答える
-1

ソリューションの人を手に入れました:)

onKeyUp = "checkLength(this);">
</form>
<script>
function fncKeyLength(textBox){
if (window.event.ctrlKey){
if (window.event.keyCode == 86)//Paste 
if (textBox.value.length > maxLength - 1)
{            
  alert("* You have reached max limit ");
  textBox.value = textBox.value.substr(0, maxLength); 
}
</script>
于 2012-07-30T13:51:19.920 に答える