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).

在您的按键处理程序中,您可以根据可用空间检查文本区域的高度。我不知道您页面的布局,因此我无法提供 100% 准确的公式来计算可用空间,但请记住,您可以通过 jquery 的 .height() 方法或通过基本的 javascript 属性获得所有可用的尺寸比如window.innerHeight。如果需要,scrollTop 属性也可以在 javascript 中使用。

您可以在检测到 textarea 已达到页面限制时设置一个标志,并在它打开时阻止输入。

最终的代码将是这样的

var outOfSpace = false;

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

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

我没有测试过这个。在 keyup 或 keyup 和 keypress 上绑定第二个处理程序可能更跨浏览器。

于 2013-06-04T08:07:15.563 回答
0

maxlength>的属性怎么样?textarea您可以在创建元素时添加它并分配所需的值。

于 2013-06-04T07:50:15.470 回答
0

通过这种方式,您可以在输入指定字符后显式阻止用户输入字符。

$('#textbox' + numTextAreaCounter).keydown(function() {
   var maxLen = $('#textbox' + numTextAreaCounter).val()).length;
e.keyCode = (e.keyCode != 0)?e.keyCode:e.which; 
if(maxLen>50 && (e.keyCode!=8 || e.keyCode!=46))// setting exceptions for backspace and delete key press.
       return false;
});
于 2013-06-04T08:05:39.797 回答