2012-02-21 15 views
7

मैं फॉर्म सबमिट करते समय $(this).serialize() का उपयोग कर रहा हूं।jQuery: फ़ॉर्म serialize, छुपा फ़ील्ड, और प्रदर्शित फ़ील्ड

यह अच्छी तरह से काम करता है, समय में छोड़कर जब मैं (किसी कारण से) (एक दृश्य, और नहीं एक है, और मैं के बारे में type="visible" लेकिन display:none बात नहीं कर रहा) ही नाम के साथ 2 क्षेत्रों है ...

लेकिन बेशक serialize इस के लिए कोई सम्मान नहीं है ... यह सिर्फ उन्हें लेता है।

मैं इस

var $disabled_list = $(this).find('input:hidden,select:hidden,textarea:hidden').attr('disabled', 'disabled'); 
$(this).serialize(); 
$disabled_list.attr('disabled',''); 

की कोशिश की और यह मेरी समस्या को हल करने की है, को छोड़कर: छिपा चयनकर्ता, भी टाइप लेता = "छिपा"

क्या उचित तरीका है?

उत्तर

18

काम करने के लिए लगता है। यह आपको disabled विशेषताओं के साथ टिंकरिंग से बचने की अनुमति देता है।

जब से तुम मिलान नियंत्रण :hidden केवल अगर वे भी वास्तव में hidden प्रकार का पर्दाफाश, तो आपको निम्न का भी उपयोग कर सकते हैं:

$(this).find("input[type='hidden'], :input:not(:hidden)").serialize(); 
+0

धन्यवाद, मेरा से बेहतर समाधान –

0
var $disabled_list = $(this).find('input:hidden,select:hidden,textarea:hidden').not('input[type=hidden]').attr('disabled', 'disabled'); 

इस तरह की कोशिश की और यह आप के लिए, आप अपने नियंत्रण के कुछ से मेल खाते हैं और जिसके परिणामस्वरूप सेट पर यह कॉल कर सकते हैं अपने आप में <form> पर serialize() कॉल करने के लिए की जरूरत नहीं है

2

आप $ form.find उपयोग कर सकते हैं (': दिखाई')। क्रमानुसार ()