2013-02-25 19 views
5

पर एकाधिक ड्रॉपडाउन विकल्प सेट करता है मैंने एक दिलचस्प छोटी समस्या में भाग लिया है जो शायद मैं मूर्ख हूं।JQuery चयनित

मैं एक का चयन करें बॉक्स है कि इस तरह एक छोटे से दिखता है:

<select id="dom_" name="dom_"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    ... 

विकल्पों महीने के दिनों प्रतिनिधित्व करते हैं और 31.

अब तक जा, मैं एक डिफ़ॉल्ट मान का चयन करने के कोशिश कर रहा था जब सूचना के साथ एक फॉर्म लोड किया जाता है (संपादन के लिए), लेकिन मैं इसे सही काम करने के लिए नहीं मिल सका।

मैं इस टुकड़ा मैं कुछ पिछले अतः सवालों में पाया उपयोग करने की कोशिश:

$("#dom_ option[value$='" + 2 + "']").attr('selected', true); 

इस लाइन चलाता है और यह चयनित करने के लिए 2 विकल्प सेट करती है, लेकिन यह भी चयनित करने के लिए अन्य 2X या X2 विकल्प सेट करता है और साथ ही। उदाहरण के लिए, 12 और 22 को भी चुना जाएगा।

$("#dom_ option").each(function() 
{ 
    if ($(this).val() == 2) 
    { 
     $(this).attr('selected', true); 
    } 
    else 
    { 
     $(this).attr('selected', false); 
    } 

}); 

तो सही विकल्प का चयन किया जाएगा, लेकिन SELECT बॉक्स अपडेट नहीं किया जाएगा:

यदि फिर भी, मैं इस का उपयोग करें।

मुझे बॉक्स को अपडेट करने के लिए मैन्युअल रूप से $("#dom_").val(2); कॉल करना होगा।

तो, मेरा सवाल यह है कि पहला विकल्प क्यों काम नहीं करता है और दूसरा दूसरा ऑटो रीफ्रेश क्यों नहीं करता है?

इसके अलावा, वास्तव में क्या $("#dom_") के माध्यम से एक SELECT वस्तु ले रहे हैं और एक विकल्प लेने और सच करने के लिए selected की स्थापना बनाम उस पर .val बुला के बीच का अंतर है? क्या इन दोनों को एक ही POST या GET डेटा भेज दिया गया है?

यहां एक jsFiddle है जो उम्मीद करता है कि यह दर्शाता है।

यदि यह मदद करता है, तो मैं JQuery 1.6.4 का उपयोग कर रहा हूं लेकिन मैं jsFiddle में कुछ नए संस्करणों पर एक ही समस्या को पुन: उत्पन्न कर सकता हूं।

यदि यह प्रश्न बहुत आसान है तो मैं क्षमा चाहता हूं। जब जावास्क्रिप्ट और JQuery की बात आती है तब भी मैं काफी शौकिया हूं।

+0

वहाँ एक कारण है कि आप 'है सिर्फ HTML विशेषता के बजाय jQuery के साथ ऐसा कर रहे हैं? – Colleen

+0

'$ (" # dom_ विकल्प [value = '2'] ")। Prop ('चयनित', सत्य); 'यदि आपको एक चर होने के लिए 2 की आवश्यकता नहीं है ... –

उत्तर

6

आप सिरों का उपयोग कर रहे हैं ($=), इसके बजाय बस value= का उपयोग करें जो केवल वही मान से मेल खाएगा जो आप चाहते हैं।

$("#dom_ option[value='" + 2 + "']").attr('selected', true); 
+0

ओह, मैं सोच रहा था कि क्या '$ =' किया था। आपका बहुत बहुत धन्यवाद! – zermy

1

यह एक सरल पर्याप्त डिजाइन है कि आप जावास्क्रिप्ट में यह करने के लिए (अर्थात, अगर यह स्थिर सामग्री है और आप सिर्फ एक सरल डिफ़ॉल्ट की जरूरत है) की जरूरत नहीं है जैसा लगता है। क्या आप जानते हैं कि आप अपने एचटीएमएल विकल्प टैग पर "चयनित" विशेषता लागू कर सकते हैं?

<select id="dom_" name="dom_"> 
    <option value="1">1</option> 
    <option value="2" selected="selected">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    ... 
+1

नहीं, कोड को क्लिक किए गए आइटम के आधार पर गतिशील रूप से चुना गया है (यह बैकएंड से AJAX के माध्यम से जानकारी प्राप्त करता है), लेकिन हाँ अगर यह स्थैतिक था, तो मैंने यह किया होगा। – zermy

1

दोनों,

1) Jquery Ends With Selector ([name$="value"]) के अनुसार अब यह काम तत्व है कि किसी भी तार के साथ वास्तव में समाप्त होने के एक मूल्य के साथ निर्दिष्ट विशेषता का चयन करता होगा चाहिए।

$("#dom_ option[value='" + 2 + "']").attr('selected', true); 

2) दूसरे उदाहरण में, else मामले अनावश्यक रूप में यह selected विकल्प

$("#dom option").each(function() 
{ 
    if ($(this).val() == 2) 
    { 
     $(this).attr('selected', true); 
    } 
}); 

चेक रीसेट कर देगा इस Jsfiddlehttp://jsfiddle.net/NUTWR/

+0

हाँ, मुझे वहां '$ = 'नहीं फेंकना चाहिए था। दूसरे विकल्प के लिए, मुझे लगता है कि 'else' इसे फेंक रहा था क्योंकि प्रत्येक पुनरावृत्ति को' चयनित 'को रीसेट करने से' SELECT' बॉक्स हर बार ताज़ा करने के लिए होता है? धन्यवाद। :) – zermy

+0

@ ज़र्मी आपका स्वागत है! – ssilas777

संबंधित मुद्दे