2013-10-24 3 views
1

Я пишу приложение Django в сочетании с шаблоном шаблона. У меня есть таблица с флажками, и я пытаюсь выполнить отборное все флажки с помощью JavaScript, но не работаетJavascript и django приложение/интеграция шаблонов

После этого я django checkbox select all by jquery Рекомендации для положить в main.js

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

Я также попытался поставить он прямо на index.html

на мой index.html у написал

<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 %} 

страница корректно отображается б ut javascript не работает

Шаблон генерирует ссылку на файлы js. В заголовке появляется

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

И перед закрытием тега тела:.

<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, так Я не знаю, не хватает ли я чего-то.

EDIT:

Я установил поджигатель на обоих браузерах. На светлячок он предупредил меня, что

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

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

так я изменил код для

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

Сейчас он работает только первый раз, когда я загрузить страницу, но если я «выбрать все» и «снять все» Я не могу «выбрать все» они снова

+0

Проверь все JS файлы включены в вашей странице с помощью Firebug. Вы можете опубликовать код для нас, чтобы помочь вам. –

+0

Я проверил и все включено, main.js, plugins.js, nodernizr и jquery.min.js –

ответ

1

Наконец он работает,

проблема заключается в атр()

Согласно этому сообщению jquery select all checkboxes

в JQuery 1.6 и выше, prop() следует использовать для «проверенного» статуса вместо attr() с переданным истинным или ложным

Наконец рабочий код был

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

единственное, что неправильно в вашем коде, который я могу найти следующее:

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

это должно быть

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

ПРИМЕЧАНИЕ

[type="checkbox"] не будет нужен, если у вас есть хорошие имена классов и не использовать .checkbox_delete на радиостанции и т.д.

Ваш оригинальный селектор не является действительным , Вы получили ошибки, зарегистрированные в консоли.

В firefox для этого является ярлык F12. Если у вас нет firebug для FF/Chrome, я бы рекомендовал вам сделать это, так как это очень хороший способ проверить ошибки JS, которые обычно заканчиваются на решая их также.

+0

Я отредактирую свой вопрос с более подробной информацией, полученной после вашего комментария –

+1

этой части '$ (". Checkbox_delete [type = "checkbox"] ")' выбросить мне ошибку, есть недостающий символ? –

+0

использовать одинарные кавычки для флажка. '$ (". checkbox_delete [type =' checkbox ']")' –

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

Попробуйте с этим

+0

не работал даже при первой загрузке –

+0

'$ (". Checkbox_delete"). Attr (' checked ', $ (this) .attr (' checked)); ' Это должно работать. –

+0

он не работал –

 Смежные вопросы

  • Нет связанных вопросов^_^