1

我有一个包含多个表单的页面。一种形式(见下面的例子)有一个输入来向页面上的表格添加行。可以选择(复选框)打开/关闭表中的每一行。另一个表单提交页面,将哪些行“打开”到下一页。

因此,最初的问题是人们正在输入一个 url 并单击返回以将其添加到表中,但不是添加它,而是提交“其他”表单 (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 中是否有更容易做到这一点的技巧?

4

2 回答 2

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

但是,最后,我不确定在您不在输入中时提交表单是否很好。

于 2012-01-05T00:55:23.833 回答
0

给您要提交 id 的表单(“mainform”),然后使用$('#mainform').submit();我确实意识到您可以根据 name 属性定位该表单,但是如果您可以控制标记,使用 id 会快得多。

查看文档了解更多信息。- http://api.jquery.com/submit/和他们提供的样本

$(document).ready(function() {
    $('#url').bind('keyup',function(e) {
        if (e.which == 13) {
            $('#mainform').submit();
            e.preventDefault();
        }
    })
});
于 2012-01-05T00:54:20.150 回答