我有一个非常简单的表单,其中只有两个小按钮。一种类型:隐藏另一种类型:图像。语义结构:
<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();
});
就是这样。问题是提交仍然发生而没有真正执行提交处理程序内的代码。我注释掉了提交功能,但它仍然提交。
有什么想法吗?
答案 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 button。
src
属性的值指定将装饰按钮的图像的URI。出于可访问性原因,作者应通过alt
属性为图像提供替代文本。
问题是提交仍然没有真正执行提交处理程序中的代码。
这是因为永远不会在按钮上触发submit
事件,您的处理程序永远不会被执行,并且永远不会阻止默认操作(表单提交)。您必须将click
事件处理程序绑定到该按钮:
$('#notsubmit').click(function(event) {
event.preventDefault();
});
submit
事件仅在form
元素上触发。