2009-08-06 12 views
11

मेरे परिदृश्य:JQuery: मैं ड्रॉपडाउन सूची केस से एक मूल्य का चयन कैसे कर सकता हूं?

  • मैं एक पाठ बॉक्स है कि उपयोगकर्ता टेक्स्ट दर्ज
  • पाठ बॉक्स एक onBlur समारोह एक dropdownlist से एक मान चुनें (यदि वह मौजूद है) की कोशिश करता है कि पाठ बॉक्स इनपुट के आधार पर किया गया है है

यदि टेक्स्टबॉक्स मान ड्रॉपडाउन सूची मान जैसा ही है तो यह पूरी तरह से ठीक काम करता है। लेकिन मैं चाहता हूं कि यह मामला असंवेदनशील हो।

तो यदि उपयोगकर्ता "stackoverflow" टाइप करता है तो मैं ड्रॉपडाउन सूची "स्टैक ओवरफ्लो" से चुनना चाहता हूं। मैं jQuery के माध्यम से यह कैसे कर सकता हूं?

उत्तर

13

यहां एक और तरीका है: मिलान के मूल्य को अपने वास्तविक मामले में, "स्टैक ओवरफ्लो", और val() पर कॉल करें।

var matchingValue = $('#select option').filter(function() { 
     return this.value.toLowerCase() == 'stackoverflow'; 
    }).attr('value');  
    $('#select').val(matchingValue); 
बेशक

, शाब्दिक 'stackoverflow' एक चर के साथ प्रतिस्थापित किया जाना चाहिए।

+0

धन्यवाद, यह वैसे ही काम करता है जिस तरह से मैं चाहता था! –

4

मुझे लगता है कि ऐसा करने का सबसे अच्छा तरीका इसे बाद के पहले से देखता है। यदि आप उन्हें सभी लोअरकेस बनाते हैं, तो वे सभी के साथ काम करने के लिए मानकीकृत और आसान हैं। तो आपको बस इतना करना है कि उपयोगकर्ता के इनपुट को सभी लोअरकेस बनाएं, और सामानों से मेल खाना वाकई आसान है।

$('something').filter(function() { 
     return (new RegExp(value, "i")).test($(this).attr('attribute')); 
    }); 

मूल्य और हालांकि बदलने की जरूरत विशेषता:

एक अन्य विकल्प एक found here की तरह एक फिल्टर समारोह का उपयोग करने के लिए है।

1

धुंध पर, अपने विकल्पों पर पुन: प्रयास करें और जांचें कि यह मेल खाता है या नहीं। फिर मेल खाने वाले एक का चयन करें।

कोड में:

$("#button").blur(function(){ 
    var val = $(this).val(); 
    $("#list option").each(function(){ 
    if($(this).text().toLowerCase() == val) $(this).attr("selected","selected"); 
    }); 
}); 

मैं इसे अभी तक परीक्षण नहीं किया, इसलिए वाक्यविन्यास त्रुटियों के लिए जाँच करने के लिए सुनिश्चित करें।

0

नियमित अभिव्यक्ति (RegExp) फ़ंक्शन शायद जाने का तरीका है।

var txt = new RegExp(pattern,attributes); 

पैटर्न: पाठ पैटर्न
गुण: "मैं" केस-संवेदी

के लिए आप फिल्टर समारोह के साथ गठबंधन कर सकते हैं। ऐसा कुछ काम करना चाहिए।

$("#textbox").blur(function() { 

    var text = $(this).val(); 

    var dropdownlist = 
     $("select").filter(function() { 
      return (new RegExp(text, "i")).test($(this).attr("id")); 
     }); 

    // do something to dropdownlist 

}); 
संबंधित मुद्दे