Проверьте все флажки с JQuery - PullRequest
1 голос
/ 24 февраля 2011
$(document).ready(function(){
    function set_checked {
        alert('test'); 
        $('*:checkbox').attr('checked', checked);
    }
}); 

И этот HTML

<input onclick="set_checked()" value="Check all" type="button" />

По какой-то причине не работает. Нет оповещения или ничего.

Ответы [ 8 ]

4 голосов
/ 24 февраля 2011

У вас есть несколько проблем,

  • пропущенные скобки в set_checked определении функции
  • неопределенная переменная checked
  • onclick ссылается на глобальную функцию, которая не является действительно глобальной

В jQuery лучше добавить событие click к элементу с помощью метода jQuery click. Вот как правильно сделать это с помощью jQuery.

$(document).ready(function(){
    // If you want to use the `set_checked` function elsewhere do this
    function set_checked() {
        $('*:checked').attr('checked', true);
    }
    $('#check_all').click(set_checked);

    // If you are only doing `set_checked` on the button press do this
    $('#check_all').click(function() {
        $('*:checked').attr('checked', true);
    });
});

<input id="check_all" value="Check all" type="button"/>
3 голосов
/ 24 февраля 2011
$('*:checkbox').attr('checked', checked);

предположительно разрешается как

$('*:checkbox').attr('checked', undefined);

Вы должны иметь

$('*:checkbox').attr('checked', 'checked');
2 голосов
/ 24 февраля 2011

try:

function set_checked() {
        alert('test'); 
        $('*:checkbox').attr('checked', 'checked');
    }

Вы забыли ()

Редактировать: как было сказано ниже, проверяемая строка должна быть.

0 голосов
/ 24 февраля 2011

Вы определили функцию set_checked внутри функции, что означает, что она не находится в глобальной области видимости и не может быть доступна посредством события щелчка ввода.

0 голосов
/ 24 февраля 2011

Замените весь пример кода:

  $(document).ready(function(){
    function set_checked {
        alert('test'); 
        $('*:checkbox').attr('checked', checked);
    }
 }); 

на:

function set_checked() {
    alert('test'); 
    $('*:checkbox').attr('checked', 'checked');
}

Как уже упоминалось, вам нужно () в определении вашей функции и кавычки вокруг «проверено»,но вам также нужна функция, определенная в глобальной области видимости, а не в обработчике jquery onready.

0 голосов
/ 24 февраля 2011

Примечание: нет смысла размещать ваши функции внутри $(document).ready();, это для вещей, которые должны запускаться при запуске.

Обновление:

Я приведу пример того, как вы хотите сделать это во всем стиле jQuery.

HTML:

<p><input id='test' type='submit' value='Click me' onclick='checkAll();' /></p>
<p>Let's see:</p>
<ul>
    <li><input type='checkbox'></li>
    <li><input type='checkbox'></li>
    <li><input type='checkbox'></li>
</ul>

JavaScript:

$(document).ready(function () {
    $('#test').click(function (event) {
        $('input[type="checkbox"]').attr('checked', 'checked');
    });
});

Вы можете проверить это здесь .

0 голосов
/ 24 февраля 2011

Вы не создаете функцию должным образом. Вам нужно добавить () между set_checked и {.

0 голосов
/ 24 февраля 2011

Сделайте вашу функцию JavaScript:

function set_checked() {
    alert('test');
    $('input:checkbox').attr('checked', 'checked'); 
}

Ваша функция была определена неправильно, поскольку в определении имени отсутствовали скобки.

РЕДАКТИРОВАТЬ: также отсутствовали кавычки в отмеченном атрибуте. Также сделал селектор более явным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...