【发布时间】:2014-03-14 23:57:39
【问题描述】:
以下行在 Firefox 中按预期工作,但 IE 返回“未定义”。
var selectedChoice = $("input[name='my.test[0].SelectedOption']:checked", '#myForm').val();
这是一个可以运行的独立示例...
请注意,问题似乎是使用 '.'和单选元素名称中的“[]”。然而,这就是 ASP.NET MVC 呈现它们的方式。这是一个在 Firefox 中运行良好但在 IE 中失败的示例。
<html>
<head>
<title>Testing radio selection jquery in IE 8</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.min.js" type="text/javascript"></script>
</head>
<body>
<form id="myForm">
<input name="selected.Option[0]" id="selected_Option1" type="radio" value="1" checked="checked" />
<label for="selected_Option1">Option 1</label>
<br />
<input name="selected.Option1" id="selected_Option2" type="radio" value="2" checked="checked" />
<label for="selected_Option2">Option 2</label>
<br />
<input name="selectedOption[2]" id="selected_Option3" type="radio" value="3" checked="checked" />
<label for="selected_Option3">Option 3</label>
<br />
<input name="selectedOption3" id="selected_Option4" type="radio" value="4" checked="checked" />
<label for="selected_Option4">Option 4</label>
<br />
<span id="displaySelectedChoice1">No value selected.</span>
<br />
<span id="displaySelectedChoice2">No value selected.</span>
<br />
<span id="displaySelectedChoice3">No value selected.</span>
<br />
<span id="displaySelectedChoice4">No value selected.</span>
</form>
<script language="javascript" type="text/javascript">
var selectedChoice = $("input[name='selected.Option[0]']:checked").val();
$('#displaySelectedChoice1').html('You have selected: ' + selectedChoice);
var selectedChoice = $("input[name='selected.Option1']:checked").val();
$('#displaySelectedChoice2').html('You have selected: ' + selectedChoice);
var selectedChoice = $("input[name='selectedOption[2]']:checked").val();
$('#displaySelectedChoice3').html('You have selected: ' + selectedChoice);
var selectedChoice = $("input[name='selectedOption3']:checked").val();
$('#displaySelectedChoice4').html('You have selected: ' + selectedChoice);
</script>
</body>
</html>
请注意,第 2、第 3 和第 4 个都可以工作,但第 1 个返回 IE 的“未定义”。它是唯一一个同时带有“。”的。和'[]'。
谢谢
【问题讨论】:
-
我认为 IE 不喜欢选择器中的方括号。也许你可以尝试逃避它们。
-
@Rocket 很确定你适合这个。关心发布一个 1 行答案,显示如何逃避角色,我会给你答案?谢谢!
-
用两个反斜杠转义两个方括号 `\\`
-
我用更有针对性的例子更新了描述。
标签: javascript jquery internet-explorer-8 radio-button