0

ここに私の問題があります。実行したいJavaScriptがいくつかありますが、挿入されるたびに一意である必要があります。それを変更する変数を追加しようとしましたが、最初の呼び出し/表示でのみ変更されます。スクリプトは次のとおりです。

     <script type=\"text/javascript\">
                    function validate_f( )
                    {
                    var x=document.forms[\"fill\"][\"textfield\"].value
                    if (x==null || x==\"\")
                      {
                      alert(\"Field cannot be empty\");
                      return false;
                      }
                    }
                    </script>

実際のフォーム コードは次のとおりです。

                    echo "<td width=\"10%\">
                <form method=\"POST\"action=\"$actual_link\" id=\"fill\" onsubmit=\"return validate_f( );\">
                <input type=\"hidden\" value=\"{$data['id']}\" name=\"id\">
                <input type=\"text\" size=\"20\" class=\"BUTTON_INPUT\" name=\"url\" value=\"\" id=\"textfield\">
                </td>
                <td width=\"1%\">
                <input type=\"Submit\" class=\"BUTTON_FILL\" name=\"fill\" value=\"\">
                </form>

問題は、フォームが異なるリンクで複数回エコーされることですが、スクリプトは最初の 1 回しか機能しません。したがって、私が考えることができる唯一の解決策は、フォームとともに JavaScript をエコーし​​、スクリプトとフォームの両方で関数名を変更することでした。

私がやろうとしていることが理にかなっていることを願っているので、基本的には "function validate_f( )" & "onsubmit=\"return validate_f( );\"" が各繰り返し/エコーで変更する必要があります..

4

2 に答える 2

2

テキストフィールドがすべてのフォームにある場合、IDに関係なくすべてのフォームで機能するこのような汎用関数を1つだけ使用できます

  function validate_f() {
      var x = this['textfield']
      if (!x || !x.value) {
          alert("field cannot be empty")
          return false
      }
      return true;
  }
于 2013-04-11T19:34:24.000 に答える
1

私はこれに対する解決策を思いついたので、誰かがこれに出くわした場合に備えて共有すると思いました. しかし、基本的に、エコー/リピートされているフォームは、繰り返されるたびに一意のデータを取得しました..基本的に、その一意の値を取得し、関数とフォームIDとして配置しました..今振り返ってみると、非常に単純です変わったユニークなものを手に入れる方法を真剣に考えなければなりませんでした。これが誰かに役立つことを願っています..

于 2013-04-15T00:56:00.967 に答える