2010-03-20 99 views
2

我有我要在点击按钮是形式外提交表单,这里是我的HTML:jQuery的提交表单的错误

<form id="checkin" name="checkin" id="checkin" action="#" method="post"> 
    <input type="text" tabindex="100" class="identifier" name="identifier" id="identifier"> 
    <input type="submit" tabindex="101" value="Submito" class="elsubmito" name="submit"> 
</form> 

这里是我的jQuery:

$("button").live('click', function() { 
    $("#checkin").submit(); 
}); 

$("#checkin").live('submit', function() { 

}); 

当我点击提交按钮里面的提交按钮,但它没有提交,当我点击表单标签外的按钮时,为什么?我怎样才能解决这个问题 ?

+2

能告诉你定义的形式外键的标记? – 2010-03-20 11:41:29

+0

表单标记中存在拼写错误 - 是复制/粘贴错误,还是在您的HTML中? (动作#“bit” – iblamefish 2010-03-20 11:43:17

回答

0

您选择所有<button>元素,但是你想选择一个<input>

由于正常的提交功能运行,它在窗体内部时起作用。

更改选择到你确实有匹配元素:input[type=submit]

更重要的是,忘了JS,只是结构化你的HTML更好,这样的提交按钮的形式里面。

-2

你可以有一个简单的超级链接表单这样
<a href="javascript: $('form checkin').submit()"> click to submit </a>
之外,这就是你所需要的

+1

)这并不涉及问题(假设问题与使用HTML5按钮元素有关),并且被认为是不正确的做法(由某些人),因为您将标记与逻辑混合在一起,轻松实现使用事件监听器。 – gpmcadam 2010-03-20 11:58:08

0

如果您使用JavaScript处理表单处理,那么您需要在buttonform处理代码中返回false

我能够使用下面的JavaScript和两个HTML示例(form元素内部和外部的button)实现相同的结果。

的JavaScript/jQuery的

$("button").live('click', function() { 
     $("#checkin").submit(); 
     return false; 
    }); 

    $("#checkin").live('submit', function(){ 
     alert("Hello world!"); 
     return false; 
    }); 

HTML实施例1

按钮的形式的内部。

<form id="checkin" name="checkin" id="checkin" action="" method="post"> 
    <input type="text" tabindex="100" class="identifier" name="identifier" id="identifier"> 
    <input type="submit" tabindex="101" value="Submito" class="elsubmito" name="submit"> 
    <button>test</button> 
</form> 

HTML实施例2

形式以外按钮。

<form id="checkin" name="checkin" id="checkin" action="" method="post"> 
    <input type="text" tabindex="100" class="identifier" name="identifier" id="identifier"> 
    <input type="submit" tabindex="101" value="Submito" class="elsubmito" name="submit"> 

</form> 

<button>test</button> 

正如我所说,这两个例子都按预期执行。您可能需要仔细检查您的button听音代码,以确保您实际上正在使用button元素。如果您使用与id属性设置为button一个元素,那么你要确保你使用了正确的jQuery选择:

$("#button").live('click', function() { // ... 
+0

@鲍尔我想要一个页面重新加载..我不希望它异步提交,我的脚本会在发布表单时发出警告,但页面不会转到操作url – 2010-03-20 16:03:54