2009-10-06 31 views
1

我在Facebook应用程序中有一个textarea元素,我想在视觉上限制一定数量的字符。这是一段代码我从网上得到:FBJS textarea倒计时

<script> 

    function textCounter(textarea, countdown, maxlimit) 
    { 
    textareaid = "ta1"; 
    if (textareaid.value.length > maxlimit) 
     textareaid.value = textareaid.value.substring(0, maxlimit); 
    else 
     document.getElementById(countdown).value = '('+(maxlimit-textareaid.value.length)+' characters available)'; 
    } 

</script> 

<form> 
    <textarea id="ta1" name="ta1" rows=5 cols=20 
     onKeyDown="textCounter('ta1','ta1count',100);" 
     onKeyUp="textCounter('ta1','ta1count',100);" 
    ></textarea> 
    <br/> 
    <input id="ta1count" readonly type="text" size="30"/> 
</form> 

<script type="text/javascript"> 
    textCounter('ta1','ta1count',100); 
</script> 

这个脚本运行良好Facebook的框架之外,但我不明白FBJS的限制,什么我需要改变,以使这个脚本工作。有没有人有成功实现类似的功能?

谢谢。

回答

1

您发布的代码片段不起作用。

这里是一个版本,可以使用(测试)

<html> 
<head> 
<title>Tarea test</title> 
<script type="text/javascript"> 

function id (e) { 
    return document.getElementById(e); 
} 

window.onload = function() { 

    var oElement = id('message'); 
    var iMaxChars = 300; 

    oElement.onblur = getHandler(iMaxChars); 
    oElement.onfocus = getHandler(iMaxChars); 
    oElement.onchange = getHandler(iMaxChars); 
    oElement.onkeyup = getHandler(iMaxChars); 

    updateTextArea('message', iMaxChars); 

} 

function getHandler(iMaxChars) { 
    return function() { updateTextArea('message', iMaxChars) }; 
} 

function updateTextArea(sTextAreaID, iMessageMaxLength) { 
    var oTextAreaNode = id(sTextAreaID); 
    var oMessageCounter = id('messagecounter'); 

    var sMessageValue = oTextAreaNode.value; 
    var iMessageLength = sMessageValue.length; 

    if (iMessageLength > iMessageMaxLength) { 
     oTextAreaNode.value = sMessageValue.substr(0, iMessageMaxLength); 
     iMessageLength=iMessageMaxLength; 
    } 
    oMessageCounter.innerHTML = ""+(iMessageMaxLength - iMessageLength); 
} 

</script> 
</head> 
<body> 

<form action="#" method="post"> 
    <fieldset> 
    <label for="message" id="messagelabel">Message <span id="messagecounter">300</span></label> 
    <textarea id="message" name="message" rows="10" cols="50"></textarea> 
    </fieldset> 
</form> 
</body> 
</html> 

在你比如你想从一个字符串的值。 textareaid.value textareaid不是此范围内的节点。

+0

哈,一个风滚草徽章,然后一个正确的,工作的答案。先生! – 2009-10-16 18:39:58