2012-03-15 30 views
6

tôi có một mảng HTML;nhận các phần tử mảng html với jquery

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

những gì tôi muốn làm là, nhận được giá trị của mảng này một màn hình mà không làm mới trang, (i làm hiển thị giá trị chỉ bên cạnh trường đầu vào, một cách độc lập 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>');} 

điều duy nhất tôi thấy trong <div id="val-authors"> là, "",

tôi đang thiếu gì?

cảm ơn trước ..

Trả lời

7

chọn của bạn:

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

là không chính xác, bởi vì bạn đang cố gắng sử dụng dấu ngoặc kép bên dấu ngoặc kép. Một trong các cặp cần phải là dấu nháy đơn.

Nếu bạn đang sử dụng trình gỡ lỗi JS, điều này sẽ hiển thị ngay lập tức.

FWIW, đây là một cách sạch thu hồi các mảng cần thiết:

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

Thay đổi:

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

Để:

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

"html mảng" của bạn không được một mảng ở tất cả, thậm chí giả sử có một số đầu vào tương tự khác (mặc dù khi biểu mẫu được gửi ngôn ngữ phía máy chủ bạn đã chọn li kely cho phép bạn truy cập các giá trị của các đầu vào có cùng tên với một mảng). Dù sao ...

Vấn đề chính là JS của bạn có lỗi cú pháp:

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

Nếu bạn muốn bao gồm hai dấu ngoặc kép bên trong một chuỗi dụng dấu ngoặc kép đen bạn phải làm thoát họ:

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

Hoặc trích dẫn chuỗi với single:

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

Nó có thể là hiệu quả hơn để tránh những thuộc tính id bắt đầu với thuộc tính name, lưu ý rằng đối với jQuery các dấu ngoặc vuông trong tên thuộc tính cần phải được thoát bằng dấu gạch chéo ngược, và đối với các dấu gạch chéo ngược dòng JS cũng cần phải được thoát:

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

Ngoài ra để có được giá trị của một đầu vào với jQuery sử dụng .val() hơn .text(), nhưng nó là hiệu quả hơn để chỉ cần sử dụng this.value:

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

tôi cũng khuyên bạn nên mảng tuyên bố với = [] hơn = new Array().

+0

cảm ơn bạn @nnnnnn, tôi không đề cập đến ở đây nhưng tôi có một javascript khác bổ sung vào tác giả [], vì vậy tôi có nhiều tác giả trên thực tế. tôi đã thử lời khuyên của bạn và replacev .text() để .val(), và baam! cảm ơn bạn .. – teutara

+0

Tuyệt. Vui vẻ giúp đỡ. (Tôi hiểu rằng bạn có nhiều phần tử 'authors []', nhưng điểm của tôi về mảng là html không có mảng.) – nnnnnn

Các vấn đề liên quan