2011-08-23 3 views
7

पृष्ठ को प्रतिपादित करते समय, एकाधिक चयन के val() को एक मान के साथ सेट किया जाता है। उदाहरण के लिए, $("#my_select_box").val(1); फिर उपयोगकर्ता एकाधिक चयन बॉक्स में एक अतिरिक्त मान का चयन करता है।एचटीएमएल: एकाधिक का चयन करने के लिए, केवल एक मान सबमिट किया गया है, लेकिन .val() दो मानों की सरणी देता है

जब फॉर्म सबमिट किया जाता है, तो केवल नया चयनित मान सबमिट किया जाता है और पहले सेट नहीं किया जाता है। जबकि फ़ायरफ़ॉक्स में डिबगिंग करते समय, .val() फ़ंक्शन दो मानों की एक सरणी देता है (पिछले एक और नए चयनित दोनों)। ऐसा क्यों होता है?

उत्तर

2

ठीक है, कोड के बिना हम निश्चित नहीं हो सकते हैं। लेकिन जब आप कई पैरा को पारित करना चाहते हैं तो आपको उस इनपुट का नाम मान [] ब्रैकेट देना होगा। पूर्व। "नाम []" ताकि सर्वर को यह पता चल सके कि वास्तव में दो मान हैं।

0

कोड के बिना क्या करना है यह बताना मुश्किल है।

हालांकि, अगर आप चाहते हैं दोनों option कि आप selected चिह्नित और एक अन्य का चयन किया गया, तो आप उन्हें इस प्रकार पहुंच सकता है:

एक आप के लिए

और

option:selected सेट के लिए option[selected="selected"] उपयोगकर्ता द्वारा चुने गए

तो ऐसा कुछ ...

$('#submit').click(function(){ 
    var s = $('#my_select_box option[selected="selected"]').val(); 
    var t = $('#my_select_box option:selected').val(); 
    alert("Set: " + s + ", Chosen: " + t); 
}); 

उदाहरण: http://jsfiddle.net/jasongennaro/pZesG/1/

18

आप PHP में प्रोग्रामिंग रहे हैं, तो समस्या है। मल्टीइलेक्ट इनपुट का उपयोग करते समय, PHP के लिए इनपुट नाम के बाद आपको रिक्त स्थान की एक खाली जोड़ी की आवश्यकता होती है। उदाहरण के लिए:

<select name="select[]" multiple="multiple"> 

बजाय

<select name="select" multiple="multiple"> 

आप या इस (शायद आप अंतर्निहित HTML करने के लिए पहुँच नहीं है) से काम नहीं चलेगा, तो आप वैकल्पिक रूप से कब्जा कर सकते हैं नहीं कर सकते इस तरह पोस्ट डेटा:

:

$data_from_post = file_get_contents("php://input"); 
var_dump($data_from_post); 

और तुम इस तरह एक स्ट्रिंग है कि आप उपयोग कर सकते हैं देखेंगे 10

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