2009-12-11 30 views
77

Tôi có một thả xuống như:thiết lập giá trị thả xuống bằng văn bản sử dụng jquery

<select id="HowYouKnow" > 
    <option value="1">FRIEND</option> 
    <option value="2">GOOGLE</option> 
    <option value="3">AGENT</option></select> 

Trong menu thả xuống trên tôi biết nội dung của danh sách thả xuống. Làm thế nào có thể thiết lập giá trị của thả xuống trong document.ready với văn bản bằng cách sử dụng jquery?

Trả lời

192

Đây là phương pháp hoạt động dựa trên văn bản của tùy chọn, không phải chỉ mục. Chỉ cần kiểm tra.

var theText = "GOOGLE"; 
$("#HowYouKnow option:contains(" + theText + ")").attr('selected', 'selected'); 

Hoặc, nếu có giá trị tương tự (nhờ shanabus):

$("#HowYouKnow option").each(function() { 
    if($(this).text() == theText) { 
    $(this).attr('selected', 'selected');    
    }       
}); 
+6

Điều này không hoạt động trong trường hợp danh sách 'select' của bạn chứa' tùy chọn' với các giá trị văn bản tương tự, tức là ' '- suy nghĩ về cách xử lý này? – shanabus

+1

Để xử lý các giá trị tương tự, bạn có thể nhận được kết quả khớp đầu tiên với chỉ mục [0] (mặc định trả về chỉ mục cuối) như sau: $ ("# HowYouKnow option: contains (" + theText + ")"). Attr ('đã chọn', 'đã chọn') [0]; – Asmussen

+4

Các phương pháp trên bị hỏng trong jquery từ phiên bản 1.9.1 trở lên. Thay đổi .attr thành .prop -> test tại đây: http://jsfiddle.net/RB5wU/579/ –

1
$("#HowYouKnow").val("GOOGLE"); 
+0

$ (document) .ready (function() { $ ("# HowYouKnow") val ("GOOGLE");. }); Đặt giá trị quá ... không chắc chắn lý do tôi bị bỏ phiếu! – dell

+10

Có thể vì nó chỉ hoạt động nếu giá trị 'option' của bạn giống với văn bản. Vì vậy, trong ví dụ của OP, tùy chọn văn bản GOOGLE có giá trị là '2' để nó không hoạt động. – shanabus

+0

Giải pháp tốt nhất :) – Subodh

-1
$("#HowYouKnow option:eq(XXX)").attr('selected', 'selected'); 

nơi XXX là chỉ số của người bạn muốn.

+0

Làm cách nào tôi có thể lấy chỉ mục của văn bản? – Prasad

+0

Xem câu trả lời của tôi ... đã kiểm tra và làm việc. –

+3

câu hỏi được đặt giá trị thả xuống theo văn bản, không phải theo chỉ mục. – Cheung

5
$("#HowYouKnow option[value='" + theText + "']").attr('selected', 'selected'); // added single quotes 
+2

làm việc với chỉ mục chứ không phải văn bản. –

0

Dưới đây là một ví dụ đơn giản:

$("#country_id").change(function(){ 
    if(this.value.toString() == ""){ 
     return; 
    } 
    alert("You just changed country to: " + $("#country_id option:selected").text() + " which carried the value for country_id as: " + this.value.toString()); 
}); 
1
var myText = 'GOOGLE'; 

$('#HowYouKnow option').map(function() { 
    if ($(this).text() == myText) return this; 
}).attr('selected', 'selected'); 
10

Đối với việc sử dụng kết hợp chính xác

$("#HowYouKnow option").filter(function(index) { return $(this).text() === "GOOGLE"; }).attr('selected', 'selected'); 

chứa sẽ chọn trận đấu cuối cùng có thể không chính xác.

1

Đối với GOOGLE, GOOGLEDOWN, GOOGLEUP tức là loại tương tự của giá trị mà bạn có thể thử mã dưới đây

$("#HowYouKnow option:contains('GOOGLE')").each(function() { 

         if($(this).html()=='GOOGLE'){ 
          $(this).attr('selected', 'selected'); 
         } 
        }); 

Bằng cách này, số lượng vòng lặp có thể giảm và sẽ làm việc trong tất cả các tình huống.

1

Mã dưới đây làm việc cho tôi -:

jQuery('[id^=select_] > option').each(function(){ 
     if (this.text.toLowerCase()=='text'){ 
      jQuery('[id^=select_]').val(this.value); 
     } 
}); 

jQuery ('[id^= select_]') - Điều này cho phép bạn chọn thả xuống nơi ID của đơn thả xuống bắt đầu từ select_

Hy vọng những điều trên sẽ hữu ích!

Cheers S

0

này được làm việc cả chrome và firefox

giá trị đặt trong hộp thả xuống.

var given = $("#anotherbox").val(); 
$("#HowYouKnow").text(given).attr('value', given); 
0

thử này ..

$(element).find("option:contains(" + theText+ ")").attr('selected', 'selected'); 
Các vấn đề liên quan