【发布时间】:2013-07-24 12:48:06
【问题描述】:
我是 javascript 和 jquery 的新手,在编写脚本时偶然发现了一个问题。
我的脚本是由 php 代码生成的,该代码从文件中读取行,对其进行解析并使用数组将它们打印出来。然后,Node.js 验证表单输入,并向用户输出有用的消息。
我已经在$('#id').blur 上成功地在各种元素上使用了js 和jquery。但是,当我尝试在我的索引元素上执行此操作时,我遇到了这个问题。
代码:
$('#NS_IN[0]').blur(function() {
alert("Called");
CopyNStoMain();
});
我注意到这个函数永远不会被执行。我尝试查看控制台中的变量。
typeof($('#NS_IN[0]')) 是一个对象;但typeof($('#NS_IN[0]').val()) 未定义。
在我的 html 代码中,我有:
<input type="text" id="NS_IN[0]" value="" name="NS[0]">
我做错了什么?如果定义了id NS_IN[0] 并且$(NS_IN[0]) 引用了一个对象,那么$(NS_IN[0]).val() 不应该存在并持有输入框的值吗?
【问题讨论】:
-
jQuery 选择器以不同的方式看到
[]。也许如果你尝试这种方式:$("#NS_IN[" + "0" + "]"). -
我猜选择器应该看起来像 $("#NS_IN[0]").val()
-
似乎
[是罪魁祸首,参见小提琴:jsfiddle.net/rePQm。 -
typeof ( $("#NS_IN[0]").val() )也未定义。 -
@Droidzone: 是的,因为
[]被 jquery 用作属性选择器,并且必须通过为 jquery 使用不同类型的选择来转义或规避(如果 id 有 @,则不是#id987654336@ 内)。
标签: javascript jquery html validation input