0

4 つのテキストエリア フォームを使用して Web サイトを作成しています。各フォームには文字数制限があります。

  • textarea1: 250 ワード制限
  • textarea2: 500 ワード制限
  • textarea3: 500 ワード制限
  • textarea4: 250 ワード制限

この問題を解決しようとしたときに見つけた既存の例を使用してみましたが、何もうまくいかないようです。

   <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
var maxwords = 250;
//
function check_length(obj, cnt, rem)
{
    var ary = obj.value.split(" "); // doubled spaces will throw this off
    var len = ary.length;
    cnt.innerHTML = len;
    rem.innerHTML = maxwords - len;
    if (len > maxwords) {
        alert("Message in '" + obj.name + "' limited to " + maxwords + " words.");
        ary = ary.slice(0,maxwords-1);
        obj.value = ary.join(" "); // truncate additional words
        cnt.innerHTML = maxwords;
        rem.innerHTML = 0;
        return false;
    }
    return true;
} 

</script>

HTML

   <textarea name="Message 1" onkeypress="
 return check_length(this,
 document.getElementById('count1'),
 document.getElementById('remaining1'));"></textarea>
Word count: <span id="count1">0</span> &nbsp;
Words remaining: <span id="remaining1">250</span>

<textarea name="Message 2" onkeypress="
 return check_length(this,
 document.getElementById('count2'),
 document.getElementById('remaining2'));"></textarea>
Word count: <span id="count2">0</span> &nbsp;
Words remaining: <span id="remaining2">500</span>

誰もこの問題の解決策を知っていますか?

前もってありがとう、トム

4

3 に答える 3

1

関数に追加のパラメーターを追加し、各関数呼び出しから maxWords を送信します。

function check_length(obj, cnt, rem, maxwords)
{
//... rest of the function would stay the same

それを呼び出すときは、最大の単語を含めます

<textarea name="Message 2" onkeypress="
 return check_length(this,
 document.getElementById('count2'),
 document.getElementById('remaining2'), 250);"></textarea>
Word count: <span id="count2">0</span> &nbsp;
Words remaining: <span id="remaining2">500</span>

残った単語を削除するには、

function check_length(obj, cnt, maxwords)
{
    var ary = obj.value.split(" "); // doubled spaces will throw this off
    var len = ary.length;
    cnt.innerHTML = len;

    if (len > maxwords) {
        alert("Message in '" + obj.name + "' limited to " + maxwords + " words.");
        ary = ary.slice(0,maxwords-1);
        obj.value = ary.join(" "); // truncate additional words
        cnt.innerHTML = maxwords;
        return false;
    }
    return true;
} 

そしてあなたのHTMLで、

<textarea name="Message 1" onkeypress="
return check_length(this,
document.getElementById('count1'),250);"></textarea>
Word count: <span id="count1">0</span> &nbsp;
于 2012-06-27T14:07:11.193 に答える
0

関数の問題は、変数に対して挿入される単語の量を常にチェックしていることですmaxwords(最初のテキストエリア制限として 250 単語に設定されています)。

したがって、より良い試みは、元の制限を持つ関数に追加のパラメーターを渡すことです (テキストエリアごとに異なります)

于 2012-06-27T14:08:00.893 に答える
0

classそれらのテキストエリアに属性を挿入し( など) class='area250'class='area500'関数に if ステートメントを含めます。

function check_length(obj, cnt, rem)
    {
        if(window.event.srcElement.getAttribute('class')=='area250')
            maxwords=250;
        else if(window.event.srcElement.getAttribute('class')=='area500')
            maxwords=500;
        else .......................................

    } 
于 2012-06-27T14:08:41.723 に答える