2013-03-25 33 views
6

Trong JQuery, tại sao tôi nhận được information Undefined bằng mã sau?JQuery - danh sách chuỗi

JS - phần bên phải là Undefined

var s = $("[name='CountAnswer']").val(); 

HTML

<input style="width:150px" type="text" id="CountAnswer_1_" name="CountAnswer[1]"> 
<input style="width:150px" type="text" id="CountAnswer_2_" name="CountAnswer[2]"> 
<input style="width:150px" type="text" id="CountAnswer_3_" name="CountAnswer[3]"> 

Trả lời

6

Bạn đang sử dụng bình đẳng comparion nhưng bạn phải sử dụng thẻ hoang dã lẽ j query attribute starts with^ nhưng tuyên bố trên sẽ cho giá trị của phần tử được so khớp đầu tiên. Bạn có thể sử dụng từng để lặp qua tất cả các phần tử.

var s = $("[name^='CountAnswer']").val(); 

Lặp lại sử dụng each().

Live Demo

$("[name^='CountAnswer']").each(function(){ 
    alert($(this).val()); 
    //or 
    alert(this.value); 
}); 

Sửa Dựa trên OP ý kiến. Để nhận được giá trị của tất cả các kết quả phù hợp.

Live Demo

strValues = $("[name^='CountAnswer']").map(function(){ 
    return this.value; 
}).get().join(','); 
+0

Ok, nhưng tôi muốn lưu này như Danh sách chuỗi làm thế nào để làm điều đó? –

+0

Bạn có thể sử dụng bản đồ, kiểm tra câu trả lời cập nhật của tôi trong một thời gian. – Adil

+0

Chỉ cần một mẹo, lần sau sử dụng 'console.log' thay vì' alert'. Thật khó chịu khi thay đổi tiêu điểm tab. : | – hjpotter92

5

Bởi vì bạn không có một yếu tố có tên là == CountAnswer. Bạn cần phải xác định một tên cụ thể, ví dụ:

$("[name='CountAnswer[1]']").val(); 

Ngoài ra, bạn có thể sử dụng "Begins With" ký tự đại diện (^) để phù hợp với tất cả các yếu tố tên mà bắt đầu với CountAnswer:

$("[name^='CountAnswer']").val(); 

này tất nhiên, chỉ trả về giá trị của phần tử đầu tiên trong tập hợp phù hợp, vì đó là hành vi của val().

+0

Cảm ơn bạn đã dành thời gian và trả lời nhưng Adil đã làm tốt hơn –

3

jsFiddle demo

Bạn nên thiết lập một mảng các giá trị chuỗi của bạn, và sau đó trên một số sự kiện sử dụng jquery phần selector trận đấu, "starts with"(^), lặp đi lặp lại thuộc danh mục đầu vào được biểu thị bởi tên của bạn.

bản demo html:

<input value="a" style="width:150px" type="text" id="CountAnswer_1_" name="CountAnswer[1]"> 
<input value="b" style="width:150px" type="text" id="CountAnswer_2_" name="CountAnswer[2]"> 
<input value="c" style="width:150px" type="text" id="CountAnswer_3_" name="CountAnswer[3]"> 
<br><input type="button" id="b" value="show string list" /><div id="console"></div> 

bản demo js:

var stringList = []; 
$('#b').click(function(){ 
stringList = []; 
$("[name^='CountAnswer']").each(function(){ 
    stringList.push(this.value); 
}); 
var c = $("#console"); 
for(var i = 0; i < stringList.length; i++){ 
    var d = $("<div>"); 
    d.html(stringList[i]); 
    c.append(d); 
} 
console.log(stringList); 
}); 
Các vấn đề liên quan