使用jQuery在textarea中的Maxlength

使用http://viralpatel.net/blogs/2008/12/set-maxlength-of-textarea-input-using-jquery-javascript.html下的脚本我试图将textarea的输入限制为1000个字符。 原型也包含在页面中。

它在chrome中运行良好,但在firefox中给出以下错误并且输入不受限制:

$("textarea[maxlength]") is null 

我完全难过了。 任何帮助,将不胜感激。 代码片段如下。

textarea:

  60, 'rows' => 8, 'maxlength' => 1000 %> 

javascript:

   jQuery.noConflict(); jQuery(document).ready(function($) { $().maxlength(); })  

jquery.maxlength.js:

 jQuery.fn.maxlength = function(){ $('textarea[maxlength]').keypress(function(event){ var key = event.which; //all keys including return. if(key >= 33 || key == 13) { var maxLength = $(this).attr('maxlength'); var length = this.value.length; if(length >= maxLength) { event.preventDefault(); } } }); } 

包装你的jquery.maxlength.js文件:

 (function($){ .. existing code goes here })(jQuery); 

当你调用$().maxlength()它试图使用$变量,但是在不同的范围内,它不再等于jQuery 。 通过将插件包装在自执行匿名函数中,它创建了一个私有范围,其中$ = jQuery

由于jQuery设置为noConflict()模式 ,因此需要将jquery.maxlength.js更改为

 (function($) $.fn.maxlength = function(){ $('textarea[maxlength]').keypress(function(event){ var key = event.which; //all keys including return. if(key >= 33 || key == 13) { var maxLength = $(this).attr('maxlength'); var length = this.value.length; if(length >= maxLength) { event.preventDefault(); } } }); }; })(jQuery);