2009-10-06 3 views
1

У меня есть элемент textarea в приложении Facebook. Я хочу ограничить визуально определенным количеством символов. Это фрагмент кода, который я получил от сети: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

Hah, значок корзины, затем правильный рабочий ответ. Прямо на сэра! –

Смежные вопросы