麻烦保护表单提交

时间:2013-01-07 15:45:31

标签: jquery forms

我有一个HTML表,其中的行表示数据库记录。最后一列的单元格有一个带有提交按钮的表单,用于删除数据库记录。表单具有唯一的ID,但其中的字段只有名称,每个表单的名称相同。

我有一个简单的用户确认,但我想确保表单不会因为Javascript没有运行而提交(错误或其他)。所以我想我会将其中一个隐藏字段的值留空并在提交时将其填入(处理脚本所需的字段,但无论选择哪条记录都是相同的值,因此很容易分派)。这是我试过的:

$(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>

1 个答案:

答案 0 :(得分: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();
   }
  });
});