0

テキストエリアを動的に作成しています。その後、ページ制限に達するまで入力したいのですが、テキストエリアへの入力を禁止するにはどうすればよいですか? 誰でも助けることができますか?

$("#page1").click( function (event,data) {              
     var newTextAreaDiv = $(document.createElement('div'))
    .attr("id", 'TextAreaDiv' + numTextAreaCounter);
     newTextAreaDiv.html('<textarea rows="1" id= "textbox' + 
         numTextAreaCounter+ ' " '+'style="display:block; max-width:50%;
         max-height:50%;height:50px;width:100px; ></textarea>');             

            newTextAreaDiv.className='notes_textarea';
            newTextAreaDiv.appendTo("#page_right");         
            $("#notesfullpage").trigger('create');
            numTextAreaCounter++;   
});
4

3 に答える 3

0

ユーザーが文字を入力するたびに、keypress イベントがトリガーされます。を使用して、動的に生成されたすべてのテキストエリアに対してもこれを処理できます$('#page1').on('keypress', 'textarea', handler)

keypress ハンドラーで、使用可能なスペースに対してテキストエリアの高さを確認できます。あなたのページのレイアウトがわからないので、利用可能なスペースを計算するための 100% 正確な式を提供することはできませんが、jquery の .height() メソッドまたは基本的な JavaScript プロパティを介して利用可能なすべての寸法があることに注意してください。 window.innerHeight など。scrollTop プロパティは、必要に応じて JavaScript でも利用できます。

テキストエリアがページ制限に達したことを検出したときにフラグを設定し、オンになっているときに入力できないようにすることができます。

最終的なコードは次のようになります

var outOfSpace = false;

$('#page1').on('keypress', 'textarea', handler);

$('#page1').on('keypress', 'textarea', function() {
    if (outOfSpace)
        return false;
});

私はこれをテストしていません。キーアップまたはキーアップとキープレスで2番目のハンドラーをバインドする方が、よりクロスブラウザーになる可能性があります。

于 2013-06-04T08:07:15.563 に答える