0

In a form, i have a button and an image... when i click on image, form action is called, that work... but when i click on the button action is not called. Is there a specific thing to do for a button?

js

$('#formUser').submit(function() {
  $(this).attr("action", "/secure/downloaduserinfo/" + reportName);
});


$('#formUser').submit(function() {
  $(this).attr("action", "/secure/deleteuser/" + reportName);
});

web part

<button type="button" id="deleteUserButton${statusReport.count}"></button>

<input id="downloadUserButton${statusReport.count}" type="image"/>
4

3 回答 3

1

type="button"元素不是提交按钮,它们仅用于运行客户端代码。

如果要提交表单,请使用type="submit"(或根本不指定 type 属性,默认为 submit)。


也就是说,我会避免对 JavaScript 的依赖。提供按钮和名称以及一个值,然后在服务器上使用它来确定您是要下载还是删除。

于 2013-10-25T19:21:09.057 回答
1

“图像”类型的输入类似于“提交”,它确实提交了您的表单,这就是您的提交处理程序工作的原因。虽然“按钮”类型的输入不会提交表单,但它看起来就像一个按钮。

于 2013-10-25T19:22:52.933 回答
0

对于同一个元素,您有 2 个提交侦听器,因此每次#formUser提交时,它都会使用它找到的第一个提交侦听器。

您可以使用 onclick 侦听器并将其绑定到被单击的特定元素。

我不确定您正在使用的模板系统是如何绑定的,但我会使用一个类而不是 id。

<button type="button" class="delete-user-button" id="deleteUserButton99">Delete</button>
<img src="http://placehold.it/200x200" class="download-user-button" id="downloadUserButton99"/>



<script>
    $('.delete-user-button').click(function() {
      // store object that was clicked
      var obj = $(this);

      // set that objects action attribute
      obj.attr("action", "/secure/deleteuser/" + obj.attr('id'));

      // show the action attribute's value
      alert(obj.attr('action'));
    });


    $('.download-user-button').click(function() {
      // store object that was clicked
      var obj = $(this);

      // set that objects action attribute
      obj.attr("action", "/secure/downloaduserinfo/" + obj.attr('id'));

      // show the action attribute's value
      alert(obj.attr('action'));
    });
    </script>

这是一个演示通过单击侦听器操作对象的小提琴:http: //jsfiddle.net/chapmanc/HHfQT/2/

于 2013-10-25T19:55:52.567 回答