2

这是一个 HTML 表单的代码,如 Firebug 所示:

<form action="http://localhost/home/newuser" method="post">
    <input type="hidden" value="48" name="user_id">
    <input type="text" name="username">
    <input type="submit" value="Next">
</form>

下面是一些绑定到它的 jQuery 代码:

$('.popup .newuser form').live('submit', function()
{
    $(this).ajaxSubmit(function(data)
    {
     // handle response
    });
    return false;
});

但是,当我单击“下一步”按钮时,文本字段会显示先前输入值的组合框(Firefox 功能)。Firebug 的 Network 选项卡上没有显示 HTML 请求,并且 jQuery 侦听器中的断点未命中。

感觉就像我错过了一些非常明显的东西......

更新:我意识到发生了更奇怪的事情:我无法通过键盘在文本字段中输入任何内容。我只能从 Firefox 组合框中选择以前的值。之后,我什至无法选择框中的文本。

4

5 回答 5

1

事实证明,这个问题与 jQuery 或 Javascript 无关。相反,它位于 CSS 中,其中包含表单的 DIV 的 z-index 为 1,并且本身包含在 jQuery-UI 对话框中,框架给出的 z-index 为 1001。显然这导致了内部 DIV (因此表单)根本不接收任何键盘或鼠标事件。

于 2012-04-12T08:02:25.410 回答
0
<form action="http://localhost/home/newuser" method="post">
    <input type="hidden" value="48" name="user_id" />
    <input type="text" name="username" />
    <input type="submit" value="Next" />
</form>

将 / 放在输入元素的末尾

于 2012-04-10T11:56:57.933 回答
0

你为什么不使用<form ... OnSubmit="yourfunction()"></form>

于 2012-04-10T12:09:18.297 回答
0

我会将此放在评论中,但似乎我还没有这样做的特权。

从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 而不是 .live()。

编辑

用逗号而不是空格分隔选择器:

$('form, .popup, .newuser')

希望有帮助

于 2012-04-10T12:27:48.983 回答
0

.live()现在已弃用。对于跨浏览器支持,当您使用 jQuery 1.7+ 时使用 .on() 或较低版本中使用.delegate() 。

.on() 示例:

$(document).on('submit', '.popup .newuser form', function(){
    $(this).ajaxSubmit(function(data){
       // handle response
    });
    return false;
});

.delegate() 示例:

$(document).on('.popup .newuser form', 'submit', function(){
    $(this).ajaxSubmit(function(data){
       // handle response
    });
    return false;
});
于 2012-04-10T12:29:21.530 回答