为什么我的输入类型图像会进行回发

时间:2013-03-26 17:16:41

标签: jquery forms submit

我有一个非常简单的表单,其中只有两个小按钮。一种类型:隐藏另一种类型:图像。语义结构:

<form id = "whatever" method = "post" action = "<?php echo $self; ?>" >  
<input type = "hidden" value ="whateverelse">
<input type = "image" src="www.someweburl.com/resource.gif" id="notsubmit">
</form>

表格看起来应该很好。问题是,当我点击图像按钮时,它实际上回发了帖子。它实际上不是一个提交按钮,所以不确定提交的原因。我确实计划让它实际提交,所以有一个jquery处理程序,它做这样的事情:

$('#notsubmit').submit(function(event) {

event.preventDefault();
// do my business logic
// make some food 
// whatever else I want to do
$('#whatever').submit();

});

就是这样。问题是提交仍然发生而没有真正执行提交处理程序内的代码。我注释掉了提交功能,但它仍然提交。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

$('#notsubmit').click(function(event) {
    // do my business logic
    // make some food 
    // whatever else I want to do
    $('#whatever').submit();
    return false;
});

答案 1 :(得分:2)

  

这不是真正的提交按钮,所以不确定提交的原因。

这是一个提交按钮。我引用了关于image类型的HTML specification

  

创建图形submit buttonsrc属性的值指定将装饰按钮的图像的URI。出于可访问性原因,作者应通过alt属性为图像提供替代文本。


  

问题是提交仍然没有真正执行提交处理程序中的代码。

这是因为永远不会在按钮上触发submit事件,您的处理程序永远不会被执行,并且永远不会阻止默认操作(表单提交)。您必须将click事件处理程序绑定到该按钮:

$('#notsubmit').click(function(event) {
    event.preventDefault();
});

submit事件仅在form元素上触发。