0

データベース レコードを表す行を含む HTML テーブルがあります。最後の列のセルには、データベース レコードを削除するための送信ボタンのあるフォームがあります。フォームには一意の ID がありますが、その中のフィールドには名前だけがあり、それらの名前は各フォームで同じです。

簡単なユーザー確認がありますが、Javascript が実行されていない (エラーか何か) ためにフォームが送信されないようにしたいと考えています。そこで、非表示フィールドの 1 つの値を空白のままにして、送信時に入力しようと考えました (処理スクリプトで必要とされるフィールドですが、どのレコードを選択しても同じ値になるため、簡単です)割り当てます)。これが私が試したものです:

$(document).ready(function() {
  $("form[id^='deltrans']").submit(function(e) {
    if (confirm("Are you sure you want to delete this transaction?")) {
      $(this).find("[name='uri']").val("my value...");
    } else {
      e.preventDefault();
    }
  });
});

しかし、 $(this).find() を使用してもうまくいかないようです - Firebug によると、 $(this).find("[name='uri']").val() は未定義です。私のエラーを確認できますか、または JS に問題がある場合に誤ってフォームが送信されるのを防ぐ方法について、より適切で簡単な提案をいただけますか?

編集:コメントのリクエストごとに、関連するHTMLは次のとおりです。

<form method="post" id="deltrans<? echo $row->TransID; ?>" action="processor.php">
  <td class="button-in-table">
    <input type="hidden" name="tid" value="<? echo $row->TransID; ?>">
    <input type="hidden" name="uri" value="">
    <input type="submit" name="deltrans" value="Del">
  </td>
</form>
4

1 に答える 1

0

入力がフォーム内にある場合、uri使用できませんでした:

$(this).children('[name^=uri]').val("my value...");

全体として:

$(document).ready(function() {
  $("form[id^='deltrans']").submit(function(e) {
   if (confirm("Are you sure you want to delete this transaction?")) {
      $(this).children('[name^=uri]').val("my value...");
   } else {
      e.preventDefault();
   }
  });
});
于 2013-01-07T16:03:00.907 に答える