0

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

<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();

});

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

有任何想法吗?

4

2 回答 2

2
$('#notsubmit').click(function(event) {
    // do my business logic
    // make some food 
    // whatever else I want to do
    $('#whatever').submit();
    return false;
});
于 2013-03-26T17:21:52.117 回答
2

它不是真正的提交按钮,所以不确定为什么会发生提交。

它是一个提交按钮。我引用了关于类型的HTML 规范:image

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


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

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

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

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

于 2013-03-26T17:22:42.997 回答