1

定型テンプレートと組み合わせた Django アプリを作成しています。チェックボックスのあるテーブルがあり、javascript を使用してすべて選択チェックボックスを実装しようとしていますが、機能していません

この推奨事項のdjangoチェックボックスに従って 、main.jsに入れたjqueryですべて選択します

$("#selectAll").live('change',function() {
  $(".checkbox_delete:checkbox").attr('checked', this.checked);
});

また、index.htmlに直接配置しようとしました

私のindex.htmlにyが書いた

<input type="checkbox"  id="selectAll"  />
<label for="selectAll"> Select</label>

 {% for event in latest_events_list %}
 <input type="checkbox" class="checkbox_delete" name="event" id="event.id"
         value="{{ event.id }}"  />
{% endfor %}

ページは正しく表示されるが、JavaScript が機能しない

ボイラープレートは、js ファイルへのリンクを生成します。ヘッダーに表示されます

<script src="/static/js/dh5bp/vendor/modernizr-2.6.2.min.js"></script>

body タグを閉じる前に:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write ('<script     src="/static/js/dh5bp/vendor/jquery-1.10.2.min.js"><\/script>')</script>
 <script src="/static/js/dh5bp/plugins.js"></script>
 <script src="/static/js/main.js"></script>

すべての js ファイルが正しくリンクされているので、それらをたどることができます

私はjsの経験がないので、何かが足りないかどうかわかりません。

編集:

両方のブラウザにfirebugをインストールしました。Firefoxでは、それは私に警告しました

TypeError: $(...).live is not a function    

$("#selectAll").live('change',function() { 

だから私はコードを変更しました

$(function(){
    $("#selectAll").change(function() {
    $(".checkbox_delete:checkbox").attr('checked', this.checked);
    });
 }); 

ページを初めてロードしたときに機能するようになりましたが、「すべてを選択」して「すべてを選択解除」すると、再度「すべてを選択」できなくなります

4

3 に答える 3

1

最後にそれは機能します、

問題は attr() です

この投稿 jquery によると、すべてのチェックボックスを選択します

jQuery 1.6 以降では、true または false が渡される attr() の代わりに prop() を「チェック済み」ステータスに使用する必要があります。

最後に、作業コードは

$("#selectAll").change(function() {
   $(".checkbox_delete:checkbox").prop('checked', this.checked);
});
于 2013-10-24T21:47:12.047 に答える
0

私が見つけることができるコードで唯一間違っているのは次のとおりです。

$(".checkbox_delete:checkbox").attr('checked', this.checked);

これはあるべきです

$(".checkbox_delete[type="checkbox"]").attr('checked', this.checked);

ノート

[type="checkbox"].checkbox_delete適切なクラス名があり、ラジオなどを使用しない場合は必要ありません。

元のセレクターが無効でした。コンソールにエラーが記録されているはずです。

In firefox the shortcut for this is F12, If you don't have firebug for FF / Chrome installed, I'd recommend you do so as it is an extremely good way of checking for JS errors, which usually ends in solving them as well.

于 2013-10-24T13:44:43.187 に答える