मैं jQuery डॉक्स पर देख रहा हूं और मुझे लगता है कि हम चयनकर्ताओं का उपयोग करके एक पंक्ति में ऐसा कर सकते हैं :
$("#myForm :input[value!='']").serialize() // does the job!
जाहिर है कि #myForm को आईडी "myForm" के साथ तत्व मिलता है लेकिन जो बात मेरे लिए पहले से कम स्पष्ट थी वह यह थी कि #myForm और: इनपुट के बीच स्पेस कैरेक्टर की जरूरत है क्योंकि यह वंशज ऑपरेटर है।
: इनपुट सभी इनपुट, टेक्सारिया, सिलेक्ट और बटन तत्वों से मेल खाता है।
[मान! = ''] एक विशेषता है न के बराबर फ़िल्टर। अजीब (और सहायक) बात यह है कि सभी: इनपुट तत्व प्रकारों में मूल्य विशेषताएँ भी चयन और चेकबॉक्स आदि हैं।
अंत में उन इनपुट्स को भी हटा दें जहां मूल्य था '।' (जैसा कि प्रश्न में उल्लेख किया गया है):
$("#myForm :input[value!=''][value!='.']").serialize()
इस मामले में juxtaposition, यानी एक दूसरे के बगल में दो विशेषता चयनकर्ताओं रखने , एक का तात्पर्य है। अल्पविराम का उपयोग करने से तात्पर्य है एक। क्षमा करें यदि यह सीएसएस लोगों के लिए स्पष्ट है!
[value]
विशेषता वाले किसी भी तत्व से मेल खाता है , जिनमें खाली मान (या नहीं) मान शामिल हैं। यह पहले के jQuery संस्करण की कुछ शैलियों के बीच असंगतता बनाई में एक बग की वजह से है और । उदाहरण के लिए, ले लो ; बग इस फिडेल में चित्रित किया गया है ।value
input[value]
:input[value]
<input value="foo"><input value=""><input value><input>