2011-08-14 17 views
6

पर ध्यान दिए बिना इनपुट का मूल्य प्राप्त करने का सामान्य तरीका मैं एक जेनेरिक फ़ंक्शन लिखने की कोशिश कर रहा हूं जिसे मैं jquery सत्यापन प्लगइन के साथ उपयोग कर सकता हूं जो किसी अन्य फ़ील्ड के मान के आधार पर आवश्यक फ़ील्ड बनाएगा। यहाँ मैं क्या चाहते है:टाइप

  • तो फील्ड 1 के मूल्य मूल्यों की एक निर्दिष्ट सरणी में है ("0" वर्तमान के साथ "नहीं", "एन/ए" का परीक्षण, और), या खाली है, कुछ भी नहीं । अन्यथा, फील्ड 2 आवश्यक है।

फ़ील्ड 1 का मान प्राप्त करना मुद्दा है। मुझे टेक्स्ट-टाइप या <select> इनपुट के साथ इसे समझने में कोई समस्या नहीं थी, लेकिन मैं इसे रेडियो के साथ काम करने और कठिनाई के लिए प्राप्त करने की कोशिश कर रहा हूं।

var value = $('[name="option"]').val(), 
    empty = ['no', '', 'n/a', '0']; 

// If the input is not "empty", make the additional field required 
if ($.inArray(value.toLowerCase(), empty) < 0) { // returns -1 if not found 
    required = true; 
} else { 
    required = false; 
} 

यह सब कुछ के लिए काम करता रहा, रेडियो सिवाय क्योंकि यह पहले रेडियो के मूल्य को पढ़ने के लिए लगता है की अगर यह जांच की गई या नहीं इसकी जरूरत: यहाँ मेरी कोड से एक अंश है।

क्षेत्र है कि ट्रिगर किया जाएगा "आवश्यक" या तो होगा (आदि text, url, email,) विभिन्न पाठ आदानों से एक, एक <select>, या रेडियो का एक भी विकल्प सेट हो। कोई विकल्प नहीं। मैं इस फ़ंक्शन को प्रत्येक फ़ील्ड के लिए अपनी jquery सत्यापन कॉन्फ़िगरेशन में required पर पैरामीटर के रूप में पास कर दूंगा, जिसे मैं इसे लागू करना चाहता हूं। मूल्यांकन किए जाने वाले "अन्य" फ़ील्ड की name विशेषता यह उपलब्ध होगी।

यहाँ मेरी डेमो अब तक, एक तरह से बदसूरत है, लेकिन वहाँ नोट नहीं हैं: http://jsfiddle.net/uUdX2/3/

मैं is(':checked') का उपयोग कर अलग अलग तरीकों का एक समूह और :checked चयनकर्ता की कोशिश की है, लेकिन वे सभी विफल रहे हैं। मैंने उन्हें डेमो से हटा दिया क्योंकि वे काम नहीं कर पाए।

मुझे रेडियो और टेक्स्ट-प्रकार या इनपुट का चयन करने के लिए क्या करना है, यह जानने के बिना कि किस प्रकार का इनपुट होगा?

उत्तर

8

इस

var value = $('[name="option"]'); 
var type = value.attr("type"); 

if(type && type.toLowerCase() == 'radio') 
    value = value.filter(":checked").val(); 
else 
    value = value.val(); 

कार्य demo

+0

मुझे यकीन नहीं है कि मैंने इस बारे में क्यों नहीं सोचा, यह पूरी तरह से काम करता है। मेरा मानना ​​है कि इसे कई विकल्प इनपुट के लिए भी काम करना चाहिए, अगर मुझे इसकी ज़रूरत है। कभी-कभी हमें लंबे दिन के बाद आंखों का एक और सेट चाहिए। बहुत बहुत धन्यवाद। –

+0

खुशी है कि यह आपको धन्यवाद में मदद करता है। – ShankarSangoli

1

कुछ इस तरह का प्रयास करें:

var value = $('[type="radio"][name="option"]:checked, [type!="radio"][name="option"]', form).val() || '0' 

काफी शंकर के समान है, लेकिन चयनकर्ता में यह सब करता है।

http://jsfiddle.net/infernalbadger/uUdX2/8/

यह काम नहीं कर रहा है जब कुछ भी नहीं चुना गया है। यह सुनिश्चित नहीं है कि ऐसा होने पर आप क्या करना चाहते हैं?

+0

मैंने कुछ ऐसा करने की कोशिश की और इसे काम नहीं कर सका, लेकिन ऐसा करने के लिए यह एक और अच्छा तरीका लगता है (मैं शायद छोटी बग को समझ सकता हूं)। मुझे यह विधि पसंद है क्योंकि यह एक चयनकर्ता (प्रकार) का उपयोग करता है। संपादित करें: मैंने डेमो में एक नोट छोड़ा है कि कुछ भी नहीं होने पर क्या होना चाहिए: "यदि" नहीं "चेक किया गया है या कुछ भी चेक नहीं किया गया है, तो अतिरिक्त फ़ील्ड की आवश्यकता नहीं होनी चाहिए।" मेरी पोस्ट में स्पष्टीकरण देने के लिए खेद है। –

+0

मैंने '|| जोड़कर छोटी बग तय की है मूल्य रेखा के अंत में '0'''। इस तरह यदि उसे कोई मान नहीं मिलता है तो यह 0 पर डिफ़ॉल्ट होता है जो तब संदेश प्रदर्शित करेगा। –

+0

बहुत अच्छा काम करता है, इच्छा है कि मैं दोनों उत्तरों को स्वीकार कर सकूं। मैं अब के लिए अन्य विधि का उपयोग कर रहा हूं, लेकिन अगर मैं आपकी विधि का उपयोग कर समाप्त करता हूं तो मेरे पास स्वीकृत उत्तरों को स्विच करने के साथ कोई योग्यता नहीं है। वास्तव में रिचर्ड की सराहना करते हैं। शंकरसंगोली की विधि ने मुझे वास्तव में चेहरा बना दिया! (जैसा कि: मैंने इस बारे में क्यों नहीं सोचा ??) –

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