为什么jQueryUI对话框中的HTML表单没有提交?
这是Firebug显示的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>
<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请求,则可能会发生这种情况。查看一下,您将确定这是否是一个跨域请求。