我的表单中有类似于以下的代码:
<input type="hidden" id="submitMyForm" name="submitMyForm" checked="checked" />
当我尝试在 if 语句中使用此代码时,我意识到它对于 Firefox/Chrome 返回 true,但对于 IE 返回 false:
$('#submitMyForm').prop("checked")
这是一个jsfiddle来说明。
为什么 IE 对这个表达式的解释不同?而且,从更实际的 Angular 来看,我可以使用在所有浏览器中计算结果为 true 的等效表达式是什么?
最佳答案
您的 HTML 无效(无论如何,在 HTML 5 中,早期版本的 HTML 无法在 DTD 中表达规则,但仍无法确认)。只有单选按钮和复选框可以具有 checked
属性。隐藏输入可能不会。您遇到的差异是由于浏览器尝试以不同的方式从 HTML 中的错误中恢复。
明智的方法是根本不使用带有选中属性的隐藏输入。
也许您可以使用data-checked
属性来代替。然后使用 .data('checked')
访问它。
您还可以继续使用损坏的 HTML 并检查属性本身(而不是从中生成的属性):
alert($('#submitMyForm').attr("checked"));
关于javascript - 为什么这个表达式在 Firefox/Chrome 中返回 true,而在 IE 中返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28086932/