jquery的表单提交不在IE中工作

cor*_*ded 4 javascript jquery internet-explorer

我们在这里要做的是我们有一个id为upgrade_form的表单.我们还有一个名为"paypal_submit"的表单.此表格为空白.'upgrade_form'有结算明细字段(地址,姓名,到期等)

然后,我们只有一个提交按钮,逻辑是,如果选中信用卡单选按钮,它将提交表单,但当您选择paypal时,它将显示一个nyromodal(http://nyromodal.nyrodev.com)灯箱单选按钮,然后单击提交.

  • 编辑*

好的,我们彻底改变了整个过程.我们首先添加了2个未包含在表单中的隐藏字段.这两个字段包含信用卡和贝宝的网址.当您选择信用卡单选按钮时,您将获得信用卡网址.当您选择paypal单选按钮时,您将获得paypal网址.

当您单击单选按钮时,我们使用以下命令更改表单的操作:

$('#upgrade_form').attr('action', $('#credit-card-target-url').val())
Run Code Online (Sandbox Code Playgroud)

(credit-card-url是隐藏字段)

因此,当我们点击nyromodal灯箱中的链接时,我们只需拨打电话

$('#upgrade_form').submit();
Run Code Online (Sandbox Code Playgroud)

但!它仍然不适用于任何IE浏览器.对此有何帮助?我们正在安装建议的IE脚本调试器,但我很悲观,我们什么都看不到.

编辑

刚刚重试了这个.我们拿出了灯箱和其他代码.我们刚刚开始使用一个带有链接的基本表单,当按下时,调用:

$('#upgrade_form').submit();
Run Code Online (Sandbox Code Playgroud)

仍然无法在IE中工作.那是因为jquery的submit()吗?

好吧,我用google搜索jquery提交不在IE中工作,发现这个:jQuery表单submit()在IE6中不起作用?

但是我检查了我们的代码,我们的"提交"按钮实际上是一个链接,我搜索了生成的文档,发现没有名为submit的输入.单击链接时,我添加了一个警报来检查表单是否存在(由于nodeName null问题),我确实收到了带有html格式的警报.它只是暂停提交.

这是现在的代码:

$('#paypalbutton').click( function() {
  alert($('form#upgrade_form').html());
  $('form#upgrade_form').submit();
  return true;
}
Run Code Online (Sandbox Code Playgroud)

IE在jquery中停止在这一行:

nodeName: function( elem, name ) {
  return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
},
Run Code Online (Sandbox Code Playgroud)

小智 14

我最近有一个类似的问题,我在ASP.NET服务器表单中创建一个"伪表单"(所以我不能使用另一个表单标记),我想发布到另一个域而不需要写用于执行远程发布的服务器端代码.轻松回答 - 即时创建表单并提交.适用于良好的浏览器......

经过一些考验和磨难后,我意识到IE将不会按预期工作(这是一个惊喜),除非正在提交的表单已添加到DOM中.所以,这是我的解决方案.我希望它对你们有些帮助.请注意,我的所有输入和提交都在同一个容器中.".post-to"是带URL的隐藏输入.

$(".post-form").click(function(ev) {

    var postto = $(this).siblings(".post-to").val();    
    var form = document.createElement("form")
    $(form).attr("id", "reg-form").attr("name", "reg-form").attr("action", postto).attr("method", "post").attr("enctype", "multipart/form-data");

    $(this).siblings("input:text").each(function() {
        $(form).append($(this).clone());
    });

    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);

    return false;
});
Run Code Online (Sandbox Code Playgroud)

最终,它是一种享受.


小智 0

try...catch里面的声明会each()揭示错误吗?