2016-07-28 14 views
0

私は薬物リマインダーアプリを構築しており、ユーザーがボタンをクリックすることで機能し、現在の時間に基づいてユーザーが取るべき薬を表示します。ユーザーがMed AとMed Bを午後3時に取得する必要がある場合は、午後3時にボタンをクリックすると、Med AとMed Bの2つのチェックボックスが表示されますが、なぜあなたはMed Bを取っていないのですか?ドロップボックスを使用して、ユーザーが理由を選択できるようにします。チェックボックスに基づいてアラートを表示する

しかし、現時点では、ユーザーが「Med A」にチェックをしただけでは、「Med CとMed Cを選んだ理由は何ですか?」というメッセージが表示されます。チェックボックスを押すと、別の時間に撮影する必要があるため表示されませんでした。したがって、特定の時間にどのような投薬が必要なのかは問題ではありません。システムは、現在の表示チェックボックス(時間に基づいて表示される)に基づいてではなく、常にすべてのチェックボックスオプションに基づいて尋ねます。

JS:

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'; 
    } 

HTML

<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

これに対してjsfiddleなどを作成できますか?なぜ私の答えがうまくいかないのか分からないので、それはとても役に立ちます。 – Whothehellisthat

答えて

1

そのチェックボックスが表示されていない場合は、はクスリのリストにその名前を追加することができませんでしたことができます。 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";} 
} 
+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューから](レビュー/低品質の投稿/ 13149267) –

+0

元のコードを変更して、目的の結果が得られるようにします。私は、これを明確にするためにそこにメモを入れます。 – Whothehellisthat

+0

これは機能しません。 Med Aが特定の時間にチェックボックスリストの唯一の薬であった場合、「なぜMed BとMed Cを取ったのですか」と質問します。 – michelle9090

関連する問題