0

私はtextareaいくつかの入力を取得するために使用しています。ラベルには、更新された残りの文字が表示されます。IEでは正常に機能しますが、FF 3.0では、上限に達した後、キーを削除したりバックスペースキーを使用したりすることはできません。

のkeypressイベントでjavascript関数を使用していtextareaます。

javascriptコードは

function checkLength()
{
    var opinion = document.getElementById('opinion').value;
    if(opinion.length > 50)
        alert("You have reached the mas limit.");
    else
        document.getElementById('limit').innerHTML = 50 - opinion.length;
}

ページ上で、私はこれを使用しています

<label id="limit">50 </label>
<textarea id="opTxtArea" onkeypress="javascript:checkLength();"></textarea>

すべてが正常に機能しています。FFで問題が発生し、入力が最大制限に達すると、メッセージが表示されますが、削除またはバックスペースは許可されません。

4

3 に答える 3

0

あなたのJavaScriptコードは間違っています

function checkLength()
{
    var opinion = document.getElementById('opTxtArea').value;
    if(opinion.length > 50)
        alert("You have reached the mas limit.");
    else
        document.getElementById('limit').innerHTML = 50 - opinion.length;
}

あなたは間違った要素を取っていました

var opinion = document.getElementById('opinion').value;

に変更されました

var opinion = document.getElementById('opTxtArea').value;
于 2010-04-13T07:06:25.050 に答える
0

「javascript:」を削除してみましたか?

Javascript:

function checkLength()
{
var opinion = document.getElementById('opTxtArea').value;
if(opinion.length > 50)
    alert("You have reached the max limit.");
else
    document.getElementById('limit').innerHTML = 50 - opinion.length;
}

HTMLコード:

<label id="limit">50</label>
<textarea id="opTxtArea" onkeypress="checkLength();" maxlength="50"></textarea>

また、その行document.getElementById('opinion').valueに間違ったIDが入力されていると思います。

于 2010-04-13T07:06:57.223 に答える
0

別の回答で述べたように、これは目的を果たさないため、属性のjavascript:プレフィックスを削除する必要があります。onkeypress

ここには他の問題があります。あなたは実際に何を達成したいですか?アラートはユーザーにとって非常に煩わしいので、文字数制限を超えたことを示す要素をページに表示することをお勧めします。また、文字数制限を超えたらどうしたいですか?それ以上の入力を防止する (削除は防止しない) か、スタック オーバーフローがコメント フィールドに対して行うことを行うことができます。これは、文字制限を超えた場合に負の数を表示するが、それ以上の入力を防止しないようにすることです。

于 2010-04-13T09:28:54.593 に答える