नाम विशेषता में वर्ग कोष्ठक के साथ इनपुट के लिए jQuery चयनकर्ता


180

मैं इस तत्व को चुनने की कोशिश कर रहा हूं जिसमें नाम विशेषता में वर्ग कोष्ठक हैं:

<input type="text" name="inputName[]" value="someValue">

मैंने यह कोशिश की है (जो काम नहीं करता है):

$('input[inputName[]=someValue]')

और न तो यह करता है:

$('input[inputName&#91;&#93;=someValue]')

या यह:

$('input["inputName[]"=someValue]')

संपादित करें: जैसा कि आप में से कुछ ने बताया है, $('input[inputName=someValue]')कभी काम नहीं करेगा। मैं क्या करने की कोशिश कर रहा था: $('input[name=inputName][value=someValue]')। (लेकिन []नाम विशेषता में)।

जवाबों:


263

प्रति jQuery प्रलेखन , इस प्रयास करें:

$('input[inputName\\[\\]=someValue]')

[संपादित करें] हालांकि, मुझे यकीन नहीं है कि आपके चयनकर्ता के लिए सही वाक्यविन्यास है। आप शायद चाहते हैं:

$('input[name="inputName[]"][value="someValue"]')

32
अच्छी पकड़। दो बैकस्लैश की आवश्यकता का कारण यह है कि एक एकल बैकस्लैश को जावास्क्रिप्ट स्ट्रिंग एस्केप चरित्र के रूप में व्याख्या किया गया है, इसलिए आपको एक शाब्दिक बैकलैश निर्दिष्ट करने के लिए दो की आवश्यकता है, जो चयनकर्ता को भागने का चरित्र प्रदान करता है ... आह, चरित्र के कई स्तरों के खुशियाँ भागने।
पीटर

उसके लिये आपका धन्यवाद। यह सिर्फ नियमित अभिव्यक्ति का उपयोग करने की बात है। यह बहुत उपयोगी होता है जब आप फॉर्म डेटा को सीधे किसी व्यू या फ़्रेम में अपने पसंदीदा व्यू फ्रेमवर्क में सबमिट करते हैं। इससे मुझे कई प्राथमिक प्रमुख तत्वों के साथ वस्तुओं को हटाने के बारे में सवाल का जवाब देने में मदद मिली। ;)
लुइज़ फ़िजाओ वेरोनसी

79

आप अपने jQuery चयनकर्ताओं में "मज़ेदार" पात्रों को उद्धृत करने के लिए बैकस्लैश का उपयोग कर सकते हैं:

$('#input\\[23\\]')

विशेषता मानों के लिए, आप उद्धरणों का उपयोग कर सकते हैं:

$('input[name="weirdName[23]"]')

अब, मैं आपके उदाहरण से थोड़ा भ्रमित हूँ; वास्तव में आपका HTML कैसा दिखता है? विशेष रूप से स्ट्रिंग "इनपुटनाम" कहां दिखाई देता है?

फिक्स्ड बोगोसिटी संपादित करें ; धन्यवाद @ डाँक्रम्ब


1
मैं चयन नहीं कर पा रहा हूं (संयोग से एक चुनिंदा टैग) <select name="foo[bar]">का उपयोग करते हुए $('select[name=foo\\[bar\\]]')मैं ऐसा करने में सक्षम हूं $('select[name="foo[bar]"]), आप दूसरा सुझाव दें।
फ्रैंक नॉक

53

विशेषता चयनकर्ता सिंटैक्स वह [name=value]जगह है जहां nameविशेषता नाम है और valueविशेषता मान है।

इसलिए यदि आप मूल्य वाले inputविशेषता nameवाले सभी तत्वों का चयन करना चाहते हैं inputName[]:

$('input[name="inputName[]"]')

और अगर आप दो विशेषताओं की जाँच करना चाहते हैं (यहाँ: nameऔर value):

$('input[name="inputName[]"][value=someValue]')

7

यदि चयनकर्ता एक चर के भीतर समाहित है, तो नीचे दिया गया कोड मददगार हो सकता है:

selector_name = $this.attr('name');
//selector_name = users[0][first:name]

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\\$1');
//escaped_selector_name = users\\[0\\]\\[first\\:name\\]

इस मामले में हम डबल बैकस्लैश के साथ सभी विशेष पात्रों को उपसर्ग करते हैं।


1
selector.replace (/ ([|]) / जी, '\\\\ $ 1'); मेरे लिए थोड़ा बेहतर काम किया क्योंकि यह बच गए स्लैश को जोड़ता है और दो पैदा करता है, न कि एक स्लैश से बचकर ...
Fydo

@ फ़ेडो को बस इतना याद है कि आपको कॉलन, पीरियड्स के साथ-साथ कुछ अन्य पात्रों से भी बचने की ज़रूरत है
एरिक किगाथी

1

बस इसे अलग-अलग उद्धरणों के साथ अलग करें:

<input name="myName[1][data]" value="myValue">

JQuery:

var value = $('input[name="myName[1][data]"]').val();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.