2012-01-04 68 views
1

我有一个页面有多种形式。一个表单(见下面的例子)有一个输入来添加行到页面上的表格。可以选择(复选框)开启/关闭表格中的每一行。另一个表单提交发送哪些行在“下一页”的页面。jQuery - 提交一种形式的退货时禁用另一种形式的退货提交

所以,最初的问题是人们输入一个url并点击返回来将它添加到表中,但是没有添加它,而是提交'other'表单(mainForm)。

所以,我添加了下面的jQuery。这解决了问题 - 现在,当url字段处于焦点状态并且您单击返回时,它会向列表中添加一个url并且不会提交mainForm。

但是,当该字段未处于焦点状态时,按下return将不会执行任何操作 - 当我期望它提交表单时(默认行为)...因为事件仅附加到该输入字段。

HTML(大大简化):

<form name="data> 
<input id="url" class="field" type="text" size="65" name="urlText"> 
<input class="hubField" type="button" value="Add Url" name="urlAddButton"> 
<table> 
    <tr> 
     <td><input type="checkbox"></td> 
     <td>Description text</td> 
     ....and so on... 
</table> 
</form> 

<form name="mainForm"> 
<input type="SUBMIT" value="Load Selected Urls" name="Submit"> 
</form> 

JS/jQuery的:

$(document).ready(function() { 
    $('#url').bind('keyup',function(e) { 
     if (e.which == 13) { 
     $('input[name="urlAddButton"]').focus().click(); 
     e.preventDefault(); 
     } 
    }) 
}); 

我是相当新的jQuery的,所以是很好的。 ;-)在js中,我可能会写一些信息,说明如果该字段没有被关注并按下回车键,请提交主窗体。有没有一种方法可以在JQuery中更轻松地完成这项工作?

回答

3

如果我明白了,你要当用户按回车键,而他的在“URL”输入不提交MainForm的。当他进入时,你触发点击“urlAddButton”。如果是这样,这里是一个的jsfiddle工作示例:http://jsfiddle.net/MUUUE/

$(document).ready(function(){ 
    $(this).bind('keydown',function(e) {//keyDOWN (for the input) 
     if(e.which == 13) {//if enter is pressed 
      if(e.target.id == "url"){//and we're in the url input 
       $('input[name="urlAddButton"]').focus().click(); 
       e.preventDefault(); 
      } 
      else if(e.target.type != "textarea" && e.target.type != "text"){//else, we submit the main form (if we're not in another input or textarea) 
       $("#mainForm").submit();//id attr added in the html code 
      } 
     } 
    }) 
}); 

不过,到最后,我不知道,它是那么好当你在输入不是提交表单。

0

给你想要提交一个id(“mainform”)的表单,然后使用$('#mainform').submit();我知道你可以根据name属性来定位该表单,但是如果你有控制权标记。

查看更多文档。 - http://api.jquery.com/submit/和样品,他们给

$(document).ready(function() { 
    $('#url').bind('keyup',function(e) { 
     if (e.which == 13) { 
      $('#mainform').submit(); 
      e.preventDefault(); 
     } 
    }) 
});