使用索引元素id发生意外错误

时间:2013-07-24 12:48:07

标签: javascript jquery html validation input

我是javascript和jquery的新手,在编写脚本时偶然发现了一个问题。

我的脚本是由php代码生成的,它从文件中读取行,解析它并使用数组打印出来。然后,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]">

我做错了什么?如果定义了标识NS_IN[0]并且$(NS_IN[0])引用了一个对象,那么$(NS_IN[0]).val()不存在并保留输入框的值吗?

4 个答案:

答案 0 :(得分:3)

您需要转义jquery选择器字符。

$('#NS_IN\\[0\\]').blur(function() {
        alert("Called");
        CopyNStoMain();     
    });

答案 1 :(得分:0)

您已经得到了答案here ...我不知道如何将您的问题标记为副本。

//get
bla = $('#txt_name').val();
//set
$('#txt_name').val('bla');

答案 2 :(得分:0)

在jQuery中,[]以不同的方式工作,例如:

div[id^="player_"]

因此,其中一个解决方案是选择ID以某些东西开头的项目:

$("input[id^=NS_IN]").val();

答案 3 :(得分:0)

当您使用其他选择器时,它会起作用,因为jquery使用[]作为属性选择器本身。所以使用例如(见小提琴:http://jsfiddle.net/rePQm/1/):

  

$('input')。click(function(){alert(“clicked”+ this.id);});

一个元素选择器,它选择所有输入元素并将click处理程序添加到所有输入元素。有关更多可能的选择器,请参阅http://api.jquery.com/category/selectors/的jquery文档的selectors部分。