0

複数の小さなフォームがあるページがあります。各フォームには、データなしステータスを返す URL にフォームを送信する onchange 関数を持つ 1 つの入力フィールドがあります。

ユーザーが送信ボタンしかない小さなフォームをクリックするまで、フォームを次々と送信して、問題なく動作します。このクリックが機能し、ただし、前のフィールドの変更を放棄すると、その onchange が起動しなくなります変更された関数の下部にあるクリックは失敗します (まだ firebug トレースを理解しようとしています)。

どうしたの?私の構造の修正はありますか?

アップデート:

最初に、送信のアクションを単純に遅らせようとしましたが、うまくいきませんでした。

を非表示にし、一連の「イベント」に を追加して、実際の送信が行われる前にフォーカスが停止するようにしました。以下のコードが更新されました。したがって、質問は次のようになります。

これは可能な限り簡単ですか?


脚本:

$(function() {
  $('input,select').change(changed);
});
function changed(){
  ... 
  $(this).parents('form').find(':submit').click();
}
function doSubmit(elt, id)
{
  $(elt).focus();
  setTimeout(function(){
      $(id).click();
    }, 400);
}

小さいフォームの 1 つ:

<form class="clean" method="POST" action="QuoteProApp.php">
  <input type="submit" value="field" name="btn_update" style="display: none;">
  <input type="hidden" value="000242" name="quote_id">
  <input type="text" maxlength="15" size="3" value="" name="q[cost][4][1][unit]">
</form>

問題のあるクリックは次の形式になります。

<form class="clean" method="POST" action="QuoteProApp.php">
  <input type="hidden" value="000242" name="quote_id">
  <input type='button' name='btn_close' value='Close' onclick='doSubmit(this,"#CLOSE");'>
  <input id='CLOSE' type='submit' name='btn_close' value='Close' style='display:none;'>
</form>
4

2 に答える 2

1

まったく関係ないかもしれませんが、変更イベントのセレクターには送信入力も含まれています。次のように変更できますか。

 $('input[type="text"],select').change(changed);

何かが変わるかどうかを確認するには?

于 2013-05-02T23:50:37.717 に答える
0

解決策は、ボタンタグを作成し、フォーカスを明示的に設定し、タイムアウトを設定して、実際の非表示の送信入力タグをクリックすることであることが判明しました。これにより、フォーカスの変更により、それに関連付けられた送信が実行され、ページの明示的な送信が続行されます。

この解決策を示すために質問が更新されました。

于 2013-09-26T19:53:04.987 に答える