मैं एक दवा अनुस्मारक ऐप बना रहा हूं, और यह उपयोगकर्ता द्वारा एक बटन पर क्लिक करके काम करता है और सिस्टम उस दवा को प्रदर्शित करेगा जो उपयोगकर्ता को वर्तमान समय के आधार पर लेना चाहिए। और कहें कि यदि उपयोगकर्ता को 3 बजे मेड ए और मेड बी लेना चाहिए, और जब उपयोगकर्ता 3 बजे बटन पर क्लिक करता है, तो मेड ए और मेड बी के साथ दो चेकबॉक्स पॉप अप होंगे, लेकिन यदि उपयोगकर्ता केवल "मेड ए" की जांच करता है, तो सिस्टम को चाहिए एक संदेश प्रदर्शित करें जिसमें पूछा गया हो कि "आपने मेड बी क्यों नहीं लिया?" एक ड्रॉपबॉक्स के साथ उपयोगकर्ता को कारण चुनने की अनुमति देता है।

हालाँकि इस समय, यदि उपयोगकर्ता केवल "मेड ए" की जाँच करता है, तो सिस्टम "मेड बी और मेड सी क्यों नहीं लिया" पूछते हुए संदेश प्रदर्शित करेगा क्योंकि मेड सी को भी चेकबॉक्स के विकल्प में से एक के रूप में सूचीबद्ध किया गया है, बस वह इसे प्रदर्शित नहीं किया गया था क्योंकि इसे एक अलग समय पर लेना चाहिए था। इसलिए इससे कोई फर्क नहीं पड़ता कि उपयोगकर्ता को किसी विशेष समय पर कौन सी दवा लेनी चाहिए, सिस्टम हमेशा सभी चेकबॉक्स विकल्पों के आधार पर पूछेगा और वर्तमान प्रदर्शित चेकबॉक्स (जो समय के आधार पर प्रदर्शित होता है) के आधार पर नहीं पूछेगा।

जेएस:

function validate() {
        var msg = [];
        [].forEach.call(document.querySelectorAll('input[type="checkbox"]:not(:checked)'), function(elem, index) {
                        msg.push(elem.name);
                        });
                        navigator.notification.alert(msg.length ? 'Why didnt you take ' + msg.join(' and ') : 'Well done, you have taken all the medications!', alertDismissed, 'Message for you:','Done');

        }

    function showDiv(){
        if(document.querySelectorAll('input[type="checkbox"]:not(:checked)').length==0) {
            hide();
        }else{document.getElementById('welcomeDiv').style.display = "block";}
    }

    function myFunction(){
        var hour = (new Date()).getHours();
        showMed('A', hour == 15);
        showMed('B', hour == 15);
        showMed('C', hour == 19);
    }

    function showMed(med, show) {
        document.getElementById('med' + med).style.display = show ? '' : 'none';
    }

एचटीएमएल

<div class="inner" id=text><button onClick="myFunction()" >Check</button></div>

</div>
    <div id=aa style="display:none">
        <form>
            <div id='medA'>
                <input type="checkbox" name="Med A" value="A">Medication A
            </div>
            <div id='medB'>
                <input type="checkbox" name="Med B" value="B">Medication B
            </div>
            <div id='medC'>
                <input type="checkbox" name="Med C" value="C">Medication C
            </div>

                <div id="welcomeDiv" style="display:none;" class="dropdown" title="Basic dialog">
                    <select>
                        <option value="" disabled="disabled" selected="selected">Please choose one</option>
                        <option value="forget">Forget to take</option>
                        <option value="notfeeling">Not feeling like taking it</option>
                        <option value="sideeffect">Worried about side-effects</option>
                        <option value="sideeffect">Run out of supplements</option>
                        <option value="misclick">Misclick</option>
                        <option value="others">Others</option>
                    </select>
                        <input id="btnbutton" class="btn" type="button" onClick="know();hide()" value="Submit">
                </div>
            <input id=xbutton type="button" onClick="validate();showDiv()" value="Submit">
        </form>
0
michelle9090 28 जुलाई 2016, 10:55
क्या आप इसके लिए jsfiddle या कुछ और बना पाएंगे? मुझे नहीं पता कि मेरा जवाब क्यों काम नहीं करेगा, इसलिए यह बहुत मददगार होगा।
 – 
Whothehellisthat
28 जुलाई 2016, 13:44

1 उत्तर

सबसे बढ़िया उत्तर

यदि वह चेकबॉक्स नहीं दिखाया जाता है तो आप उस नाम को दवाओं की सूची में नहीं जोड़ सकते हैं। इसे ठीक करने के लिए केवल एक कोड परिवर्तन (नीचे दिखाया गया है) पर्याप्त होना चाहिए।

var valid = true;

function validate() {
        var msg = [];
        [].forEach.call(document.querySelectorAll('input[type="checkbox"]:not(:checked)'), function(elem, index) {
                        msg.push(elem.name); valid = false;
                        });
 if(!valid) {
                        navigator.notification.alert(msg.length ? 'Why didnt you take ' + msg.join(' and ') : 'Well done, you have taken all the medications!', alertDismissed, 'Message for you:','Done'); }

        }
}

function showDiv(){
          if(valid) {
            hide();
        }else{document.getElementById('welcomeDiv').style.display = "block";}
}
1
Whothehellisthat 28 जुलाई 2016, 16:25
यह प्रश्न का उत्तर नहीं देता है। किसी लेखक की आलोचना या स्पष्टीकरण का अनुरोध करने के लिए, उनकी पोस्ट के नीचे एक टिप्पणी छोड़ दें। - समीक्षा से
 – 
H. Pauwelyn
28 जुलाई 2016, 11:54
यह दिखाता है कि वांछित परिणाम प्राप्त करने के लिए मूल कोड में क्या बदला जाना चाहिए। मैं इसे स्पष्ट करने के लिए वहां एक नोट डालूंगा।
 – 
Whothehellisthat
28 जुलाई 2016, 11:56
यह काम नहीं करता। यह अभी भी पूछता है "आपने मेड बी और मेड सी क्यों नहीं लिया" जब मेड ए किसी विशेष समय पर चेकबॉक्स सूची में एकमात्र दवा थी
 – 
michelle9090
28 जुलाई 2016, 13:38
मुझे नहीं लगता कि मेरा प्रश्न पर्याप्त स्पष्ट है, मैं जो कह रहा हूं वह यह है कि इस समय यदि उपयोगकर्ता को शाम 7 बजे मेड ए लेने का अनुमान है, और जब शाम 7 बजे, उपयोगकर्ता ने बटन पर क्लिक किया और मेड ए चेकबॉक्स दिखाया गया है, और जब उपयोगकर्ता सबमिट बटन पर क्लिक करता है, तो सिस्टम को "अच्छा किया, आपने सभी दवाएं ले ली हैं!" प्रदर्शित करना चाहिए। लेकिन फिलहाल सिस्टम कहेगा कि "आपने मेड बी और मेड सी क्यों नहीं लिया" जब मेड ए ही एकमात्र ऐसी दवा है जो उपयोगकर्ता को उस समय लेनी चाहिए। क्योंकि मेड बी और मेड सी उपयोगकर्ता के लिए अन्य समय पर लेने के लिए हैं
 – 
michelle9090
28 जुलाई 2016, 13:56
सही। तो आपके कोड में, आपने उन दवाओं पर .style.display = "none" सेट किया है जिन्हें आप दिखाना नहीं चाहते हैं। फिर बाद में जब इसे सबमिट किया जाता है, तो आपको उन चेकबॉक्सों के बारे में चिंता करने की ज़रूरत नहीं है जिन्हें आपने .style.display = "none" पर सेट किया है, क्योंकि उपयोगकर्ता उन्हें जांचने के लिए नहीं था। इसलिए आपको केवल यह देखने की आवश्यकता है कि क्या कोई चेकबॉक्स था जो नहीं छिपा हुआ था यह देखने के लिए कि क्या वे चेक किए गए थे।
 – 
Whothehellisthat
28 जुलाई 2016, 14:00