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)
最终,它是一种享受.