2009-07-01 16 views
5

मेरे पास 4 ड्रॉपडाउन के साथ एक फॉर्म है। सभी ड्रॉपडाउन में डिफ़ॉल्ट चयनित विकल्प "कृपया चुनें" है। मैं यह सुनिश्चित करने के लिए Jquery का उपयोग करना चाहता हूं कि पृष्ठ को सबमिट करने से पहले सभी ड्रॉपडाउन का मूल्य हो, लेकिन मेरा कोड केवल पहले पर काम करता है। क्या किसी के पास कोई तरीका है कि मैं सभी ड्रॉपडाउन को एक बार में देख सकता हूं?चयनित नहीं चुना गया

function doconfirm() { 
    if ($('select').val() == '') { 
    alert("Please Select All Fields"); 
    } 
} 

मुझे यकीन है कि मुझे कुछ याद आ रहा है लेकिन मैं इसे समझ नहीं सकता। धन्यवाद

+0

मुझे लगता है कि यह एक ऐसा कार्य नहीं है क्योंकि यह केवल पृष्ठ पर पहले चयन पर काम करता है ????? –

+0

ऐसा इसलिए है क्योंकि .val() कमांड केवल लिपटे सेट (jQuery ऑब्जेक्ट) में पहले तत्व का मान देता है। इसलिए लिपटे सेट –

उत्तर

8

function doconfirm() { 
    if ($('select').each(function() { 
    if($(this).val() == '') { 
     alert("Please Select All Fields"); 
     return(false); 
    } 
    }); 
} 
+1

में प्रत्येक तत्व पर मान की जांच करने की आवश्यकता है, जो आपको चाहिए। http://docs.jquery.com/Core/each –

+2

और यह सुनिश्चित करें कि अपने html सही है - <विकल्प मान = ""> कृपया का चयन करें और का चयन करें()। पहला एक खाली स्ट्रिंग है, दूसरा रिटर्न "कृपया चुनें" – artlung

+1

धन्यवाद, ऐसा हुआ। –

4

@mgroves 'दृष्टिकोण पर एक मामूली बदलाव, इस स्पष्ट कम से कम एक चयनित विकल्प के लिए परीक्षण और सूचनाएं पहले पर चयन है कि एक भी नहीं है। वहाँ इस दृष्टिकोण के लिए किसी भी लाभ है, तो यह बेहतर पठनीयता (विशेष रूप से .val() के उपयोग के बाद से किया गया है कुछ हद तक अस्पष्ट इस उद्देश्य के लिए) है:

function doconfirm() { 
    if($('select').each(function() { 
    if(!$(this).find('option:selected').length) { 
     alert("Please Select All Fields"); 
     return(false); 
    } 
    }); 
} 
1
इस पर अलग राय के लिए

क्यों उपयोग नहीं

function doConfirm() { 

    var toReturn = true; 

    if ($('select').filter(function(){ 
      return $(this).val() === ''; 
     }).length) { 

     toReturn = false; 
     //notify user 

    } 

    return toReturn; 
} 
संबंधित मुद्दे