为什么jQueryUI对话框中的HTML表单没有提交?

为什么jQueryUI对话框中的HTML表单没有提交?,jquery,html,ajax,jquery-ui,Jquery,Html,Ajax,Jquery Ui,这是Firebug显示的HTML表单代码: <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>

这是Firebug显示的HTML表单代码:

<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>
但是,当我点击“下一步”按钮时,文本字段会显示一个以前输入值的组合框(Firefox特性)。Firebug的网络选项卡上没有显示HTML请求,jQuery侦听器中的断点也不会被命中

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

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


<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>

将/放在输入元素的末尾

为什么不使用

我本来会将其放在注释中,但似乎我还没有这样做的特权

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

编辑

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

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

希望对你有所帮助现在已经被弃用了。对于跨浏览器支持,请在使用jQuery 1.7+或更低版本时使用

.on()示例:

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

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

结果证明问题与jQuery或Javascript无关;相反,它位于CSS中,其中包含表单的DIV的z索引为1,并且它本身包含在jQueryUI对话框中,框架给出的z索引为1001。显然,这导致内部DIV(以及表单)根本不接收任何键盘或鼠标事件。

您能给出您已注释掉的响应代码(//handle response)吗?我不确定您的错误。我想你需要任何关于你行动的消息。您使用html、php、jsp或.do?action=”“我希望它能帮助您听起来好像
live
没有成功连接到事件,或者选择器有问题?我知道这听起来很明显,但是表单周围是否有
弹出窗口
新用户
分类标签?
弹出窗口
新用户
是否可能是同级类(即
)?如果是这样的话,那么选择器应该是
$('.popup.newuser…')
,没有空格。@DRP96:因为它没有被执行,所以应该没关系。@ataddeini:我只是在jQuery live()函数中放了一个断点,它被命中,并且在正确的DOM元素上。它实际上在HTML中,我的问题是FireBug显示的规范化HTML,因为整个应用程序都基于不引人注目的附加jQuery事件处理程序。有趣的是——但看看jQuery代码,我发现live()只是转发到on()。不,回调没有被触发——看起来好像没有提交。我很确定这一定与选择器有关。我只是进行了完全相同的设置和测试,在Firebug控制台中没有看到任何东西,我将选择器更改为只
$('form')
,我可以立即看到POST请求。选择器工作正常。问题似乎是在事后,事件丢失。使用on()没有任何区别,并且回调永远不会执行。
.on()
是否未调用或
.ajaxSubmit()
是否未调用?操作url是否
http://localhost/home/newuser
属于相同的域还是不同的域?如果您正在执行跨域AJAX请求,则可能会发生这种情况。查看一下,您将确定这是否是一个跨域请求。