2017-09-11 21 views
12

से सभी चयनित मान प्राप्त करें मैं अपने vb.net पृष्ठ के लिए जावास्क्रिप्ट में एक कस्टम सत्यापनकर्ता को कार्यान्वित करने की कोशिश कर रहा हूं। इस सत्यापनकर्ता को यह जांचना चाहिए कि मल्टीचॉइस सूची बॉक्स में कोई चयनित मान नहीं है, यदि कोई त्रुटि पॉप अप दिखाती है।ListBox (क्लाइंट साइड)

बात यह है कि, मैं इसे क्लाइंट पक्ष करना चाहता हूं, लेकिन मेरे 'validateFunction' फ़ंक्शन में मुझे केवल अंतिम चयनित (या अचयनित, अगर इसे पहले से चुना गया था) आइटम मिलता है। मुझे पता है कि कोड-कोड कोड में इसे कैसे किया जाए, लेकिन मैं इसे क्लाइंट-साइड करना चाहता हूं।

aspx कोड:

<asp:ListBox ID="lbEdit" runat="server" SelectionMode="Multiple"> 
</asp:ListBox> 
<asp:CustomValidator id="cvEdit" runat="server" Display="None" ControlToValidate="lbEdit" ClientValidationFunction="validateFunction"/> 
<ajax:ValidatorCalloutExtender runat="server" ID="vceEdit" TargetControlID="cvEdit" /> 

जावा स्क्रिप्ट कोड:

function validateFunction(source, arguments) { 
     var options = document.getElementById(source.controltovalidate).options; 
      for (var i = 0; i < options.length; i++) { 
       if (options[i].selected == true) { 
        args.IsValid = true; 
        return; 
       } 
      } 
      args.IsValid = false; 
} 

जैसा कि मैंने कहा, के बाद से पिछले (अन) चयनित आइटम केवल 'विकल्प' में चयनित हो जाएगा सरणी, सत्यापन समारोह हमेशा सच हो जाएगा ...

मैंने एक और arra populating के बारे में सोचा y एक अन्य जावास्क्रिप्ट फ़ंक्शन में 'सही चयनित सरणी' के रूप में और प्रत्येक बार फ़ंक्शन को आग लगने पर चयनित विकल्प के साथ अपने मानों की तुलना करें .. लेकिन मुझे लगता है कि एक बेहतर तरीका होना चाहिए।

तो ... क्या जावास्क्रिप्ट में मल्टीचॉइस सूची बॉक्स से सभी चयनित आइटम प्राप्त करने का कोई सीधा तरीका है?

उत्तर

1
let a1 = [ 
{ 
    Selected:false, 
}, 
{ 
    Selected:false 
}, 
{ 
    Selected:false 
}]; 

अगर (a1.some (i => i.Selected)) console.log (सही); अन्य console.log (झूठा);

आप शायद क्या चाहते

4

आपका प्रश्न थोड़ा स्पष्ट नहीं है, और अपने समारोह काम कर रहा है, लेकिन क्या मैं यहाँ का जवाब देंगे आपके सवाल का का अंतिम हिस्सा होता तो ... वहाँ एक सीधे आगे रास्ता है जावास्क्रिप्ट में एक मल्टीचॉइस सूची बॉक्स से सभी चयनित आइटम प्राप्त करें?

प्रयास करें इस जे एस समारोह

<script type="text/javascript"> 
     function validateFunction() { 
      var options = document.getElementById('<% = this.lbEdit.ClientID %>').options; 
      var selectedItems; 
      for (var i = 0; i < options.length; i++) { 
       if (options[i].selected == true) { 
        if (selectedItems) { 
         selectedItems = selectedItems + ";" + options[i].value; 
        } 
        else { 
         selectedItems = options[i].value; 
        } 
       } 
      } 
      if (selectedItems) { 
       alert(selectedItems); 
       return true; 
      } 
      else { 
       alert("No item was selected"); 
       return false; 
      } 
     } 
    </script> 

और यह aspx कोड है, मैं सत्यापनकर्ता

<asp:ListBox ID="lbEdit" runat="server" SelectionMode="Multiple" > 
</asp:ListBox> 
    <asp:Button ID="test" runat="server" Text="send" OnClientClick="return validateFunction();"/> 

हटाया अपने ब्राउज़र के डेवलपर उपकरण में आप सभी के बारे में विस्तृत जानकारी देख सकते आपकी ऑब्जेक्ट की गुण

enter image description here

+0

देरी के लिए खेद है, मेरे पास आने वाली नई और जरूरी परियोजना के कारण कोई समय नहीं था ... अभी भी इस पर ... प्रतिक्रिया के लिए, ऐसा लगता है कि ऐसा लगता है कि आपका कोड वही है मेरे रूप में, तो 'विकल्प [i]। चयनित == सत्य' केवल अंतिम क्लिक किए गए विकल्प के साथ, मेरे कोड में एक बार आग लग जाएगा ... मेरे डेवलपर टूल कभी भी एक से अधिक 'चयनित = सत्य' सेट नहीं करते हैं। शायद मैंने सूची बॉक्स को गलत तरीके से घोषित कर दिया है? मुझे उम्मीद है कि सोमवार को आगे की समीक्षा करने के लिए कुछ समय बचा होगा और शायद सवाल फिर से खुल जाएगा। इस बीच मैं आपको कम से कम एक प्रयास नहीं कर सकता, धन्यवाद, धन्यवाद !!! –

+0

असल में मुझे लगता है कि यह आपको वही पुरस्कृत होगा या नहीं, जैसा कि मैंने पढ़ा है, इसलिए आपके लिए बकाया है, आपने इसे अर्जित किया है। वैसे भी मेरा कामकाज एक जावास्क्रिप्ट सरणी बनायेगा, और प्रत्येक बार listbox.selected आग, उस इंडेक्स 'राज्य को टॉगल करें (सही <---> झूठा) ... मुझे लगता है कि समाचार के साथ वापस आ जाएगा;) –

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