Javascript IExplorer错误脚本5009,带有<;表格>;是虫子吗?
我有一段代码如下:Javascript IExplorer错误脚本5009,带有<;表格>;是虫子吗?,javascript,html,google-chrome,internet-explorer,firefox,Javascript,Html,Google Chrome,Internet Explorer,Firefox,我有一段代码如下: <!DOCTYPE html> <html> <head><meta charset="UTF-8"/><title>t</title></head> <body> <form id="F1"> <script> function doit() { if(!F1.checkValidity())return;
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"/><title>t</title></head>
<body>
<form id="F1">
<script>
function doit()
{
if(!F1.checkValidity())return;
alert("ID="+FName.value); //Do some processing
}
</script>
Enter your name: <input ID="FName" pattern="[a-zA-Z]+" required ><br />
<p><button OnClick="doit()"> DO IT</button></p>
</form>
</body>
</html>
T
函数doit()
{
如果(!F1.checkValidity())返回;
警报(“ID=“+FName.value);//进行一些处理
}
输入您的姓名:
做吧
它获取一些输入并在处理数据之前对其进行验证。据报道,它确实符合HTML5。它在Firefox和Chrome中运行良好,但在IExplorer11中不起作用。它说错误脚本5009“FName未定义”。但是,如果删除表单标记,FName将被定义。但是我无法检查表格的有效性
我想知道这是否是一个IExplorer错误,如何修复它。谢谢 输入是表单的子项,而不是文档 我能够在IE中复制这个问题。我通过引用元素F1.FName来解决它,也就是说,作为表单元素的子元素。这在IE、Chrome和Firefox中都有效。我想这是预期的行为,而不是问题,但无法找到支持的参考
if(!F1.checkValidity())return;
alert("ID="+F1.FName.value); //Do some processing
这是一个bug,但对窗口对象的命名属性(这就是您所拥有的)采用一致的方法是相对较新的HTML5特性,因此浏览器实现仍在迎头赶上也就不足为奇了。还有其他处理方法,比如使用
document.getElementById('FName')
,但是@Robert的解决方案似乎不错。