【发布时间】:2014-02-27 19:12:49
【问题描述】:
我根据谷歌地图返回的数据设置了一个单选按钮,如下所示:
countryCode = results[0].address_components[i].short_name;
$('input[type=radio][name=country]').prop('checked', false);
$('input:radio[name=country]').each(function() {
if ($(this).val() === countryCode) {
$('#' + countryCode).prop('checked', true);
}
});
这会将国家/地区的缩写(例如 US)设置为单选按钮的值。收音机的 HTML 看起来像(有几个):
<label><input type="radio" id="US" name="country" form="dataInput" value="US" />United States</label>
在用户输入其他数据后,提交会触发 jQuery 的表单插件。我用的是3.46-2013.11.21版本命令是:
$('#dataInput').ajaxForm( submitOptions );
submitOptions 对象包含参数。此行之前的警告显示国家单选按钮仍有正确的数据。
PHP 使用以下语句获取数据:
$country = $_POST['country']; //for IE, PHP says Notice: undefined index: country
如果使用 IE,则会向输入正确数据的用户返回验证错误。
以上所有功能都可以在多个版本的 Firefox 和 Chrome 中使用。它在 IE 8 到 11 中不起作用。作为测试,当 HTML 更改为包含 check="checked" 时,IE 11 会选择国家,但它不会选择下一个输入,即状态。 Firefox 和 Chrome 都可以。作为这个长期存在的谜团的最后一点(无论如何对我来说)是其他几个用于其他事情的单选按钮,由 HTML 中的 checked="checked" 设置,在所有测试的 IE 版本中都可以正常工作。
如何让通过 Javascript 设置的国家单选按钮在 IE 浏览器中传递到 PHP 服务器?我已经为此工作了很多小时。请具体。如有需要,我可以提供更多信息。
【问题讨论】:
-
在我看来,表单插件会丢失或删除数据,因为我有几个带有 jQuery 选择的单选按钮的表单,并且这些表单可以很好地传递给我的 PHP 脚本。我正在使用 $.post() 和/或 $.ajax()
-
是的,Jay,但是表单插件会直接通过其他单选按钮。表单使用 $.ajax()。我想继续使用 Form,因为它可以轻松处理文本、复选框、图像等,而且我需要所有这些。
-
在另一个关于这个问题的讨论中,我突然想到这个单选按钮输入是唯一一个由 Javascript 设置的,并且唯一一个单选按钮组位于 jQuery 对话框中。 (代码未显示)我仍然没有解决方案,但问题可能是 IE8 -> 11 从对话框中获取数据的方式与 Firefox 或 Chrome 不同。请注意,我在 radio 输入语句中有 form 属性,但这对于 IE 来说可能还不够。
标签: jquery forms internet-explorer dialog ajaxform