6

送信入力タグを介して送信される、いくつかのアクションと onsubmit 値を持つフォームがあります。問題は、2 つのボタンで送信できる必要があることです。そのため、2 番目のボタンがフォームのアクションと onsubmit の値を変更する関数を作成しました。

<a href="javascript:submitCompare()" class="submit">Compare</a>

function submitCompare()
{
    document.myForm.action = "anotherAction.php";
    document.myForm.onsubmit = function() {return countChecked()};
    document.myForm.submit();
}

function countChecked()
{
  var n = $(".reports input:checked").length;
  if (n >= 3 ) {
    alert ('You must select less than 3 reports.');
    return false;
  }
  else return true;
}

Compare リンクをクリックすると、anotherAction.php ページが正しく表示されますが、2 つ以上のチェックボックスが選択されている場合でも (これは検証規則です)。onsubmit 関数が正しく動作するように助けてもらえますか?

4

3 に答える 3

6
document.myForm.onsubmit = function() {return countChecked()};

する必要があります

document.myForm.onsubmit = function( e ) {
   e = e || window.event;
   if ( !countChecked() ) {
       e.preventDefault();
       e.returnValue = false;
   }
};

送信時に false を返すと、それ以降の関数の実行が終了します。送信したくない場合は、デフォルトの送信動作を防止します。

于 2012-07-06T18:52:15.837 に答える
4

返事が遅くなりましたが、もし他の方がこれを見ていたら…

それ以外の:

document.myForm.onsubmit = function() {return countChecked()};

私はあなたが欲しかったと思います:

document.myForm.setAttribute("onsubmit", "return countChecked()");
于 2014-08-09T14:42:53.833 に答える
1

ではsubmitCompare()、明示的かつ無条件に呼び出します

 document.myForm.submit();

代わりにおそらく欲しいものがあります

 if (countChecked()) {
   document.myForm.submit();
 }
于 2012-07-06T18:53:56.760 に答える