2012-03-15 99 views
6

我有一个HTML数组;用jquery获取html数组元素

<input class="input_box" name="authors[]" id="author1"/> 

我想要做的是,让这个数组的值的显示器而无需刷新页面,(我只显示旁边的输入字段中的值,在独立div

$(document).ready(function(){  
$("input[id^="author"]").change(update); 
}); 
    function update(){ 
    var authors=new Array(); 
    $("input[id^="author"]").each(function(){authors.push($(this).text()) }); 
    var author= '"' + authors.join('", "') + '"'; 

    $('#val-authors').html('authors:<span class="red"> "'+author+'"</span>');} 

只有我在<div id="val-authors">看到的是,"",

我失去了什么?

在此先感谢..

回答

7

您的选择:

$("input[id^="author"]") 

是不正确的,因为你试图用双引号里面双引号。其中一对需要单引号。

如果您使用的是JS调试器,这应该是立即可见。

FWIW,这是检索所需的阵列的更清洁的方式:

var authors = $('input[id^="author"]').map(function() { 
    return this.value; 
}).get(); 
1

变化:

$("input[id^="author"]").change(update); 

要:

$("input[id^='author']").change(update); 
3

你的 “HTML阵” 不是数组,甚至假设有一些其他类似的输入(尽管当表单提交您选择的服务器端语言li时kely让你访问与数组同名的输入值)。反正...

的主要问题是,你的JS有语法错误:

$("input[id^="author"]") 

如果你想包括一个双引号字符串字面你要做的逃离他们的内部双引号:

$("input[id^=\"author\"]") 

或引用单打字符串:

$('input[id^="author"]') 

它可能是更有效地避免属性开始 - 带有id属性的选择器,并通过名称属性进行选择,注意对于jQuery,atttribute名称中的方括号需要用反斜杠进行转义,而对于JS字符串文本反斜杠也需要进行转义:

$('input[name="authors\\[\\]"]') 

也得到与jQuery的输入值使用.val()而非.text(),但它是更有效的只是使用this.value

var authors = []; 
$('input[id^="author"]').each(function(){ authors.push(this.value); }); 

我也建议,宣布阵列,= []而非= new Array()

+0

谢谢@nnnnnn,我没有在这里提到,但我有另一个JavaScript添加到作者[],所以我有多个作者其实。我尝试了你的建议,并将.v替换成.val()和baam!谢谢.. – teutara 2012-03-15 09:12:44

+0

很酷。乐于帮助。 (我明白你有多个'authors []'元素,但我关于数组的观点是html没有数组。) – nnnnnn 2012-03-15 09:15:27