【发布时间】:2010-09-22 14:36:03
【问题描述】:
我们在这里尝试做的是我们有一个 id 为 upgrade_form 的表单。我们还有一个名为“paypal_submit”的表格。这个表格是空白的。 'upgrade_form' 有账单明细字段(地址、姓名、到期日等)
然后我们只有一个提交按钮,逻辑是如果选中信用卡单选按钮,它将提交表单,但当您选择贝宝单选按钮时,它将显示一个 nyromodal(http://nyromodal.nyrodev.com) 灯箱和点击提交。
- 编辑 *
好的,我们彻底改造了整个流程。我们首先添加了 2 个未包含在表单中的隐藏字段。这 2 个字段包含信用卡和贝宝的网址。当您选择信用卡单选按钮时,您将获得信用卡网址。当您选择贝宝单选按钮时,您将获得贝宝网址。
当您单击单选按钮时,我们会更改表单的操作:
$('#upgrade_form').attr('action', $('#credit-card-target-url').val())
(credit-card-url 是隐藏字段)
所以当我们点击 nyromodal 灯箱中的链接时,我们只需调用
$('#upgrade_form').submit();
但是!它仍然无法在任何 IE 中工作。对此有什么帮助吗?我们正在安装建议的 IE 脚本调试器,但我很悲观,我们什么都看不到。
编辑
刚刚重试了这个。我们取出灯箱和其他代码。我们刚从一个带有链接的基本表单开始,按下该链接会调用:
$('#upgrade_form').submit();
仍然无法在 IE 中运行。那么是不是因为jquery的submit()?
好的,我在 IE 中搜索 jquery submit 时发现:jQuery form submit() is not working in IE6?
但是我检查了我们的代码,我们的“提交”按钮实际上是一个链接,我搜索了生成的文档,发现没有名为提交的输入。单击链接时,我添加了一个警报以检查表单是否存在(因为 nodeName null 问题)并且我确实收到了带有表单 html 的警报。它只是在提交时停止。
这里是代码:
$('#paypalbutton').click( function() {
alert($('form#upgrade_form').html());
$('form#upgrade_form').submit();
return true;
}
IE 在 jquery 的这一行停止:
nodeName: function( elem, name ) {
return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
},
【问题讨论】:
-
jQuery 的哪个版本? IE 禁止更改输入的
type,所以这可能是您的问题。 -
如果您在 $.each 语句之前插入一行
alert(parameters.length);会怎样?它揭示了什么? -
最新的。我将其重构为以这种方式附加: $('#payment_form').append('');但它仍然失败
-
你能打电话给$('#upgrade_form').submit();在 nyromodal 灯箱之外?以防万一灯箱存在范围/兼容性问题?或者是在错误发生之前碰到了哪一行代码(我想你可以在 IE 脚本调试器调用堆栈中看到错误之前代码执行的顺序)?
-
@Alex,我按照上面说的把灯箱拿出来,绑定了点击提交表单。它只是在 IE 调试器中的节点名错误处停止
标签: javascript jquery internet-explorer