1

我有一个 HTML5 页面,在 jQuery 对话框中包含多个数据输入。我使用输入属性 form=dataInput 将这些数据扫描到表单处理中。它在 Firefox 和 Chrome 中运行良好,但在 IE 中无法正常运行,因为 IE 不支持输入表单属性。Dialog 小部件的某些内容使输入框元素对表单处理“不可见”。form 属性为支持 HTML5 的浏览器修复了这个问题,但没有发布的 IE 有这个支持。我试过 $('.ui-dialog').appendTo('form'); 在 Dialog open: 选项中,但它不能解决问题。有没有办法让 IE 将输入数据从 Dialog 小部件中扫出并进入 $_POST ?

这是对话框内的输入框示例

<label><input type="radio" id="unitedStates"  name="country" form="dataInput" value="US">United States</label>

我使用 jQuery Form 插件来执行提交。它有一些选项,例如 beforeSubmit 和 beforeSerialize,但我不太了解文档或提交过程,不知道它们是否可以用来解决这个问题。请具体说明代码或教程。我对此很陌生,以至于我不能很好地遵循一般说明。;-)(顺便说一句,IE 有我需要的其他功能支持,只是没有这个。)

这是我的代码以及 Andrew Hagner 的建议和我的修改。对话框有效,但 IE 没有为国家设置值。需要改变什么?

var countrySelected = $("input[type=radio][name=country]").val(); //set earlier by W3C geocoding
var countryChooser = $('#countryChoices').dialog( {       
    autoOpen: false,
    bgiframe: true,
    height: 300,
    width: 850,
    resizable: false,
    draggable: true,
    title: "Click to select another country",
    open: function () {
            $('#regions').tabs(
                {
                event: "mouseover",
                })
        },
    buttons: {
        'Close / continue location input': function ()
                {
                countrySelected = $('input[name=country]:checked').val();
                $(this).dialog('close');
                }
            } 
});
//then later on
getCityFromGeonames3Step(countrySelected);
4

1 回答 1

1

更新:

// Before you enter dialog, assign the element you will
// be grabbing the info from to a variable.
var countrySelectionElement = $("input[type=radio][name=country]").val(); 
var countrySelected = "";

var countryChooser = $('#countryChoices').dialog( {       
autoOpen: false,
bgiframe: true,
height: 300,
width: 850,
resizable: false,
draggable: true,
title: "Click to select another country",
open: function () {
        $('#regions').tabs(
            {
            event: "mouseover",
            })
    },
buttons: {
    'Close / continue location input': function ()
            {
            // Since jQuery won't work in here, use the variable
            // we assigned above to access value.
            countrySelected = countrySelectionElement.val();
            $(this).dialog('close');
            }
        } 
});

//then later on
getCityFromGeonames3Step(countrySelected);

原来的:

在打开对话框之前,将输入分配给一个变量:

function OpenDialog()
{
    var input = $("yourinput");

    // Open dialog, use input to work with that element.

    // If you want you can then place the entered data in a hidden field
    // using jQuery, in the same way we are using input here. Then you will
    // be able to post that data back however you like.

}

前几天我遇到了这个问题,我在 jQuery 的 Dialog 网站上找到了这个解决方案。 http://jqueryui.com/demos/dialog/#modal-form

于 2012-07-20T20:15:45.453 回答