2009-10-06 3 views
1

Facebook 응용 프로그램에 텍스트 영역 요소가 있습니다. 시각적으로 특정 문자 수로 제한하려고합니다. 이것은 내가 웹에서 가져온 코드 조각입니다 :이 스크립트는 페이스 북 프레임의 외부에서 잘 작동FBJS 텍스트 카운트 다운

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

,하지만 난 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 텍스트 범위는이 범위의 노드가 아닙니다.

+0

Hah, 텀블 위드 배지, 올바른 답변. 선생님! –