2012-06-06 32 views
6

Tôi đang cập nhật tùy chọn đã chọn bằng lập trình bằng jQuery, nhưng không có gì thay đổi trong trình duyệt. (Tức là, tùy chọn đã chọn cũ vẫn được chọn thay vì chuyển sang tùy chọn mới được chọn.) Gợi ý?Lựa chọn làm mới sau khi đã chọn tùy chọn được thay đổi bởi jQuery

Cảm ơn. --Jeff

Tôi có một hình thức đơn giản như thế này:

<form id="form1" name="form1" method="" action=""> 
<p>Assign: 
<select name="assigner" id="assigner"> 
<option value="Sam" selected="selected">Sam</option> 
    <option value="Harry">Harry</option> 
    <option value="Fred">Fred</option> 
</select> 
<input type="button" name="button1" id="button1" value="Submit" /> 
</p> 
<p> Task A: <select name="assignment[]" id="assigner"> 
    <option value="Sam">Sam</option> 
    <option value="Harry" selected="selected">Harry</option> 
    <option value="Fred">Fred</option> 
</select> 
</p> 
<p>  
Task B: <select name="assignment[]" id="assigner"> 
    <option value="Sam">Sam</option> 
    <option value="Harry" selected="selected">Harry</option> 
    <option value="Fred">Fred</option> 
</select> 
</p> 
</form></div> 

và mã jQuery của tôi trông như thế này:

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
$('[name="button1"]').click(
    function(){ 
     var form = $(this).parents('form'); 
     var assigned = form.find(':selected').first().val(); 
     form.find(':selected').each(function(index){ 
      $(this).val(assigned).change(); 
     }); 
    } 
); 
}); 
</script> 
+1

ID phải là duy nhất. – j08691

+0

Bạn nói đúng. Cảm ơn. – jalperin

Trả lời

4

Tôi đang cập nhật tùy chọn chọn lập trình sử dụng jQuery

Không xa như tôi có thể thấy. Bạn đang thiết lập lại giá trị của option được chọn, nhưng không làm bất cứ điều gì theo như tôi có thể nói với hộp select thực tế.

Để thay đổi một hộp select, bạn cần phải xác định nó, sau đó gọi val trên , không một trong option phần tử của nó.

Tôi không thể làm ra những gì bạn muốn input[name="button1"] của bạn để làm, nhưng đây là một ví dụ về việc cập nhật một hộp select: Live copy | source

HTML:

<select id="theSelect"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
</select> 
<input type="button" id="theButton" value="Click me"> 

JavaScript:

jQuery(function($) { 

    $("#theButton").click(function() { 
    $("#theSelect").val("2"); 
    }); 

}); 

riêng, như j08691 chỉ ra trong các ý kiến, bạn không thể gán cùng giá trị id ("assigner") để hơn hơn một phần tử. id values must be unique trong tài liệu. Mã của bạn không hiển thị cho bạn bằng cách sử dụng số id đó, vì vậy, điều này có thể không liên quan, nhưng nó đáng được gắn cờ.

+0

Biểu mẫu của tôi được tạo từ một truy vấn cơ sở dữ liệu, vì vậy tôi sẽ không nhất thiết phải biết ID của các hộp chọn (hoặc thậm chí là bao nhiêu sẽ xuất hiện trong biểu mẫu). Ngoài ra, có nhiều biểu mẫu (tất cả đều có cấu trúc tương tự) trên mỗi trang. Những gì tôi đang cố gắng làm là cho phép người dùng cập nhật tất cả các hộp SELECT trên một biểu mẫu với tùy chọn đã chọn từ hộp chọn đầu tiên. Vì vậy, người dùng gán Harry cho tất cả các nhiệm vụ bằng cách chọn Harry trong hộp chọn đầu tiên và gửi. Những gì tôi thực sự cần, tôi đoán, là một cách để chọn tất cả các hộp SELECT xuất hiện trên cùng một hình thức như nút được nhấp. – jalperin

+0

@jalperin: * "Những gì tôi thực sự cần, tôi đoán, là một cách để chọn tất cả các hộp SELECT xuất hiện trên cùng một biểu mẫu như nút được nhấp." * '$ (This) .closest ('form') .find ('select') 'sẽ làm điều đó, từ bên trong một trình xử lý sự kiện trên nút. '$ (this)' kết thúc nút trong một đối tượng jQuery. 'closest ('form')' trả về một đối tượng jQuery cho phần tử 'form' gần nhất trong hệ thống phân cấp. Sau đó 'find ('select')' tìm tất cả các phần tử 'select' bên trong biểu mẫu đó. –

1
<form id="form1" name="form1" method="" action=""> 
    <p>Assign: 
     <select name="assigner" id="assigner"> 
      <option value="Sam" selected="selected">Sam</option> 
      <option value="Harry">Harry</option> 
      <option value="Fred">Fred</option> 
     </select> 
     <input type="button" name="button1" id="button1" value="Submit" /> 
    </p> 
    <p> 
     Task A: <select name="assignment[]" id="assigner2"> 
      <option value="Sam">Sam</option> 
      <option value="Harry" selected="selected">Harry</option> 
      <option value="Fred">Fred</option> 
     </select> 
    </p> 
    <p>  
     Task B: <select name="assignment[]" id="assigner3"> 
      <option value="Sam">Sam</option> 
      <option value="Harry" selected="selected">Harry</option> 
      <option value="Fred">Fred</option> 
     </select> 
    </p> 
</form> 



<script type="text/javascript"> 
jQuery(document).ready(function(){ 
$('[name="button1"]').click(
    function(){ 
     var assigned = $("#assigner").val(); 
     $('#form1 select').val(assigned); 
    } 
); 
}); 
</script> 
Các vấn đề liên quan