javascript - jQuery-अपने टेक्स्ट विवरण के माध्यम से एक चयन नियंत्रण के चयनित मूल्य को सेट करना




(13)

मेरे पास एक चुनिंदा नियंत्रण है, और जावास्क्रिप्ट चर में मेरे पास एक टेक्स्ट स्ट्रिंग है।

JQuery का उपयोग करके मैं अपने इच्छित टेक्स्ट विवरण वाले आइटम होने के लिए चुनिंदा नियंत्रण के चयनित तत्व को सेट करना चाहता हूं (मान के विपरीत, जो मेरे पास नहीं है)।

मुझे पता है कि मूल्य से इसे सेट करना बहुत छोटा है। जैसे

$("#my-select").val(myVal);

लेकिन मैं पाठ विवरण के माध्यम से इसे करने पर थोड़ा सा स्टंप हूं। मुझे लगता है कि टेक्स्ट विवरण से मूल्य प्राप्त करने का एक तरीका होना चाहिए, लेकिन मेरा दिमाग शुक्रवार दोपहर-एड है जो इसे काम करने में सक्षम है।


1.7+ के साथ सबसे आसान तरीका है:

$("#myDropDown option:text=" + myText +"").attr("selected", "selected"); 

1.9+

$("#myDropDown option:text=" + myText +"").prop("selected", "selected"); 

परीक्षण और काम करता है।


इस एचटीएमएल को देखते हुए:

<select>
    <option value="0">One</option>
    <option value="1">Two</option>
</select>

JQuery v1.6 + के लिए विवरण द्वारा चुनें:

var text1 = 'Two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).prop('selected', true);

1.6 से नीचे jQuery संस्करणों के लिए विवरण से चुनें और 1.4 से अधिक या बराबर : https://.com/a/3644500/31532

var text1 = 'Two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).attr('selected', true);

ध्यान दें कि यह दृष्टिकोण 1.6 से ऊपर वाले संस्करणों में काम करेगा लेकिन 1.9 से कम, इसे 1.6 के बाद से हटा दिया गया है। यह jQuery 1.9+ में काम नहीं करेगा

पिछले संस्करणों के लिए विवरण द्वारा चुनें:

val() दोनों मामलों को संभालना चाहिए। क्या आप इसे नहीं देख रहे हैं?

उदाहरण के लिए:

$('select').val('1'); // selects "Two"
$('select').val('Two'); // also selects "Two"

चयन बॉक्स के बच्चे प्राप्त करें; उनके माध्यम से लूप; जब आपको वह व्यक्ति मिल गया है जिसे आप चाहते हैं, तो इसे चयनित विकल्प के रूप में सेट करें; लूपिंग रोकने के लिए झूठी वापसी।


टेक्स्ट MyText के साथ विकल्प का चयन करने के लिए इसे आजमाएं

$("#my-Select option[text=" + myText +"]").attr("selected","selected");

मुझे उपर्युक्त उदाहरणों में समस्या थी, और समस्या इस तथ्य के कारण हुई थी कि मेरे चयन बॉक्स मान 6 अक्षरों के निश्चित लंबाई तारों से पहले से भर चुके हैं, लेकिन पारित पैरामीटर निश्चित लंबाई नहीं था।

मेरे पास एक rpad फ़ंक्शन है जो निर्दिष्ट स्ट्रिंग के लिए, और निर्दिष्ट वर्ण के साथ एक स्ट्रिंग को सही पैड करेगा। तो, पैरामीटर पैडिंग के बाद यह काम करता है।

$('#wsWorkCenter').val(rpad(wsWorkCenter, 6, ' '));


function rpad(pStr, pLen, pPadStr) {
if (pPadStr == '') {pPadStr == ' '};
while (pStr.length < pLen)
    pStr = pStr + pPadStr;
return pStr; 
} 

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मैं jQuery 1.10.3 और उपरोक्त समाधानों का उपयोग कर पाठ द्वारा चयन करने के लिए नहीं मिल सका। मैं निम्नलिखित कोड (स्पोलसन के समाधान की विविधता) का उपयोग कर समाप्त हुआ:

      var textToSelect = "Hello World";

      $("#myDropDown option").each(function (a, b) {
            if ($(this).html() == textToSelect ) $(this).attr("selected", "selected");
        });

उम्मीद है कि यह किसी की मदद करता है।


मैंने इसका परीक्षण नहीं किया है, लेकिन यह आपके लिए काम कर सकता है।

$("select#my-select option")
   .each(function() { this.selected = (this.text == myVal); });

मैंने पाया कि attr का उपयोग करके आप कई विकल्पों के साथ समाप्त हो जाएंगे जब आप नहीं चाहते थे - समाधान prop का उपयोग करना prop :

$("#myDropDown option:text=" + myText +"").prop("selected", "selected");


यह स्वीकृत उत्तर सही प्रतीत नहीं होता है, जबकि .val ('newValue') फ़ंक्शन के लिए सही है, उसके नाम से चयन प्राप्त करने का प्रयास करने के लिए मेरे लिए काम नहीं करता है, मुझे अपना तत्व प्राप्त करने के लिए आईडी और क्लासनाम का उपयोग करना पड़ा


यहां बहुत आसान तरीका है। कृपया इसका इस्तेमाल करें

$("#free").val("y").change();

jquery चयनित बॉक्स प्लगइन पर एक नज़र डालें

selectOptions(value[, clear]): 

पैरामीटर $("#myselect2").selectOptions("Value 1"); रूप में स्ट्रिंग का उपयोग करके मान द्वारा विकल्पों का चयन करें $("#myselect2").selectOptions("Value 1"); , या एक नियमित अभिव्यक्ति $("#myselect2").selectOptions(/^val/i);

आप पहले से ही चुने गए विकल्पों को भी साफ़ कर सकते हैं: $("#myselect2").selectOptions("Value 2", true);


 $("#Test").find("option:contains('two')").each(function(){
     if( $(this).text() == 'two' ) {
        $(this).attr("selected","selected");
     }
 });

अगर कथन "दो" और "दो तीन" के साथ सटीक मिलान करता है तो मिलान नहीं किया जाएगा


$("#myselect option:contains('YourTextHere')").val();

आपके टेक्स्ट विवरण वाले पहले विकल्प का मान वापस कर देगा। इसका परीक्षण किया और काम करता है।





jquery