0

!こんにちは、

PHPで生成された多数のチェックボックスがあります。確認ボタンがあります。ユーザーが少なくとも 1 つのチェックボックスをオンにせずにフォームを有効にできないようにしたい。

私はこのコードを持っています

var checkboxes = document.getElementsByName('date[]');
var btn = document.getElementById('Submit');
date.onchange = function(){
   for (var i=0;i<checkboxes.length;i++)
   {
      if(checkboxes[i].checked)
      {
         btn.disabled = false;
      } 
      else 
      {
         btn.disabled = true;
      }
   }
}
<form>
....
<table>
    <tr id="{{ cpt }}">
        <td><input type="checkbox" class="date" id="date" name="date[]"
                            checked value="{{ jdv.day }}"></td>
        <td>{{ jdv.day }}</td>
   </tr>
</table> 
</form>

ただし、最初のチェックボックスでのみ機能します。

手伝って頂けますか?

ありがとう

4

3 に答える 3

0

スクリプトは、チェックさbutton.disabled = true;れていないすべてのチェックボックスに対して設定されます...つまり、最後のチェックボックス以外のチェックボックスをオンにすると、最後に常に無効に設定されます。

これを後で関数に追加しますbtn.disabled = false;

return true;

このコードは次のようになります。

var checkboxes = document.getElementsByName('date[]');
var btn = document.getElementById('Submit');
date.onchange = function(){
   for (var i=0;i<checkboxes.length;i++)
   {
      if(checkboxes[i].checked)
      {
         btn.disabled = false;
         return true;
      } 
      else 
      {
         btn.disabled = true;
      }
   }
}

disabledこれにより、最初にチェックされたチェックボックスが検出されると関数が停止し、次のチェックボックスがボタンのプロパティをオーバーライドするのを防ぎます。

于 2014-05-16T13:54:10.263 に答える
-1

チェックされたチェックボックスをカウントし、最後にチェックされたチェックボックスの最小数と比較するカウンターを実行することをお勧めします

于 2014-05-16T13:51:22.930 に答える
-1

他のチェックボックスの結果が互いに上書きされないように、変数を保持する必要があります。

何かのようなもの:

var toShow = true;
var checkboxes = document.getElementsByName('date[]');
var btn = document.getElementById('Submit');
date.onchange = function(){
for (var i=0;i<checkboxes.length && toShow;i++) {
    if(!checkboxes[i].checked)
    {
         toShow = false;
    }
}
if(toShow)
    btn.disabled = false;
} else 
{
    btn.disabled = true;
}
于 2014-05-16T13:53:36.907 に答える