0

最初に、私はjavascriptについて何も知らないと言わせてください。ここ数日、テキストエリアに追加する文字カウンターを見つけるために Web を検索しています。私は最終的に、1 つの問題を除いてうまく機能する気の利いた小さなスクリプト (実用的な例) を見つけました。Firefox で許可されている最大文字数に達すると、キーボード全体が無効になります。バックスペースでカウントを短くしたり、途中でクリックして削除したりすることはできません。IE、Chrome、Safari では正常に動作しますが、FireFox では動作しません。私のリクエストは、最大文字数に達したときに FireFox でバックスペース ボタンと削除ボタンが有効になるように、誰かが JavaScript を変更するのを手伝ってくれないかということです。

すべての助けをありがとう。

JavaScript コード

<script language = "Javascript">

maxL=255;
var bName = navigator.appName;
function taLimit(taObj) {
    if (taObj.value.length==maxL) return false;
    return true;
}

function taCount(taObj,Cnt) { 
    objCnt=createObject(Cnt);
    objVal=taObj.value;
    if (objVal.length>maxL) objVal=objVal.substring(0,maxL);
    if (objCnt) {
        if(bName == "Netscape"){    
            objCnt.textContent=maxL-objVal.length;}
        else{objCnt.innerText=maxL-objVal.length;}
    }
    return true;
}

function createObject(objId) {
    if (document.getElementById) return document.getElementById(objId);
    else if (document.layers) return eval("document." + objId);
    else if (document.all) return eval("document.all." + objId);
    else return eval("document." + objId);
}
</script>

HTML コード

<font> Maximum Number of characters for this text box is 255.<br>
<textarea onKeyPress="return taLimit(this)" onKeyUp="return taCount(this,'myCounter')" name="Description" rows=7 wrap="physical" cols=40>
</textarea>
<br><br>
You have <B><SPAN id=myCounter>255</SPAN></B> characters remaining for your description...</font>
4

3 に答える 3

0

このスクリプト/html はかなり古いように見えますが、実際にはもう少し新しいものを見つける必要がありますが、これを修正する最も簡単な方法は、押されたキーが印刷可能かどうかを考慮するように taLimit() 関数を変更することです。

function isCharacterKey(event) {
    var charCode = event.charCode;    
    return charCode !== 0;
}

function taLimit(taObj, event) {        
    if (taObj.value.length<maxL || !isCharacterKey(event)) return true;
    return false;    
}

イベント オブジェクトを含めるには、taLimit() の呼び出しを変更する必要があることに注意してください。

<textarea onKeyPress="return taLimit(this, event)" onKeyUp="javascript:return taCount(this,'myCounter')" name="Description" rows=7 wrap="physical" cols="40">
</textarea>
于 2013-07-12T20:06:34.207 に答える