Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:enter时自动提交与浏览器自动完成_Javascript_Jquery_Browser_Autocomplete_Submit - Fatal编程技术网

Javascript jQuery:enter时自动提交与浏览器自动完成

Javascript jQuery:enter时自动提交与浏览器自动完成,javascript,jquery,browser,autocomplete,submit,Javascript,Jquery,Browser,Autocomplete,Submit,如果用户按下表单中的“回车”键,我将使用此JavaScript代码提交最近的按钮: jQuery.fn.installDefaultButton = function() { $('form input, form select').live('keypress', function(e) { if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) { if

如果用户按下表单中的“回车”键,我将使用此JavaScript代码提交最近的按钮:

jQuery.fn.installDefaultButton = function()
{
$('form input, form select').live('keypress', function(e)
{
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13))
    {
        if ($(this).closest('form').find('button').size() <= 0)
        {
            return true;
        }
        var defaultButton = $(this).closest('form').find('button:first');
        defaultButton.click();
        $(this).blur();
        return false;
    }
    else
    {
        return true;
    }
});
return this;
jQuery.fn.installDefaultButton=函数()
{
$('form input,form select').live('keypress',函数(e)
{
if((e.which&&e.which==13)| |(e.keyCode&&e.keyCode==13))
{

if($(this).closest('form').find('button').size()我没有机会尝试一下,但它应该适合你

$("form").live('change', function(e) {
   $(this).data('changed', true); 
});

$('form input, form select').live('keypress', function(e)
{
    var form = $(this).closest('form');
    if (((e.which && e.which == 13 || (e.keyCode && e.keyCode == 13)) && form.data('changed') == true)
    {
         if ($(this).closest('form').find('button').size() <= 0)
        {
            return true;
        }

        var defaultButton = form.find('button:first');
        defaultButton.click();
        $(this).blur();
        console.log("Submitted!");
        form.data('changed', false);
        return false;
    }
    else
    {
        return true;
    }
});

要做到这一点还有很长的路要走。你不需要找到按钮并单击它,你就可以找到表单并执行。提交()无需强制单击按钮。还可以尝试一个与按键相反的更改事件?只是出于兴趣,然后我才尝试回答您的问题,为什么浏览器自动实现按enter键提交是不可接受的?并且,作为一个快速提示,请将查找按钮代码替换为$(this).nestest('form').submit();谢谢您的建议。我使用该机制查找“下一步”按钮,因为如果我在表单上有多个按钮,则必须提交正确的按钮。我需要按钮的名称来处理特定的处理。浏览器自动处理在IE中不起作用,因为此浏览器不会发送与我请求的最近按钮需要处理。好的,我知道你想做什么不太好,我建议你用另一种方式发送你需要的信息,但我会为你写一个快速修复程序。谢谢你的支持。不幸的是,浏览器自动完成上的“回车”不会触发更改事件。你必须先离开“自动完成”字段,即使用tab键,然后再离开使用enter works提交。有什么想法吗?是的,就像我提到的,也许可以尝试绑定类似的东西来聚焦。我会在我的答案上附加另一个示例。很抱歉,我无法真正测试它,如果您希望得到更多帮助,请随意设置jsbin/JSFIDLE。(如果我最终为您解决了这个问题,请接受答案:)如果没有一个肯定会有帮助的示例,很难确切地知道您在做什么,但是再次强调,您可能需要在焦点输出时将更改标记为false。焦点将不起作用,因为如果我已经输入自动完成的第一个字母,则数据为true。我认为他们并不能真正解决这个问题,因为无法获得JavaScript访问权限或者自动完成事件。如果我只对一个字段使用自动完成,您的示例将只起作用。它将在输入时自动提交第二个字段。但是,感谢您的帮助。是的,手动处理是一件棘手的事情,如果您感兴趣,您还可以使用另外一种方法。考虑一下,它可能真的起作用。取决于您U
$("form").live('change', function(e) {
   $(this).data('changed', true); 
});

$('form input, form select').live('keypress', function(e)
{
    var form = $(this).closest('form');
    if (((e.which && e.which == 13 || (e.keyCode && e.keyCode == 13)) && form.data('changed') == true)
    {
         if ($(this).closest('form').find('button').size() <= 0)
        {
            return true;
        }

        var defaultButton = form.find('button:first');
        defaultButton.click();
        $(this).blur();
        console.log("Submitted!");
        form.data('changed', false);
        return false;
    }
    else
    {
        return true;
    }
});
$("form").live('focus', function(e) {
   $(this).data('changed', true); 
});