JavaScript函数用于限制textarea中的字符,从而导致Firefox中出现“刷新”问题

时间:2011-10-04 03:00:33

标签: javascript firefox textarea

我正在使用以下JavaScript函数来限制textarea中的字符:

function limit(element, max_chars)
{
    if(element.value.length > max_chars)
        element.value = element.value.substr(0, max_chars);
}

<textarea onkeyup="javascript:limit(this, 4000)"></textarea>

在Firefox中的textarea中输入长文本并且达到限制时,焦点将返回到textarea的顶部,并且textarea本身很奇怪。在其他浏览器中一切都很好。有没有办法解决这个问题或用JavaScript限制字符/删除额外字符的其他方法?

谢谢!

3 个答案:

答案 0 :(得分:2)

你能不能使用maxlength属性来处理一个必须依赖JS的textarea诗歌?或者我错过了什么?

<textarea maxlength="10"></textarea>

编辑:

适用于支持HTML5的所有浏览器。如果您需要支持旧版浏览器,可能需要查看以下链接:

How to impose maxlength on textArea in HTML using JavaScript

HTML5信息:

http://www.w3schools.com/html5/tag_textarea.asp

答案 1 :(得分:0)

<script type="text/javascript">

/***********************************************
* Textarea Maxlength script- © Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for legal use.
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

function imposeMaxLength(obj){
var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
if (obj.getAttribute && obj.value.length>mlength)
obj.value=obj.value.substring(0,mlength)
}

</script>

<textarea maxlength="40" onkeyup="return ismaxlength(this)"></textarea>

答案 2 :(得分:0)

HTML:

<!-- Use maxlength for browsers that support it -->
<textarea maxlength="4000" onkeypress="restrictLength(this, event)"></textarea>

JavaScript的:

function restrictLength(reference, event) {
    // Retrieve maxChars from "maxlength" attribute;
    // otherwise, default to 4000
    var maxChars = reference.getAttribute("maxlength") ? parseInt(reference.getAttribute("maxlength")) : 4000;

    // Stop event from propagating up the event chain
    event.stopPropagation();

    // Test if length > maxChars
    if (reference.value.length > maxChars) {
        event.preventDefault ? event.preventDefault() : event.returnValue = false;
    }
}