флажок всегда включен - PullRequest
29 голосов
/ 06 июля 2011

Hy!

Когда Uploadify отправляет файл в действие, мне нужно знать, проверен ли флажок или нет, поэтому я сделал:

    $('#uploaded').uploadify({
        'uploader': '/uploadify.swf',
        'cancelImg': '/cancel.png',
        'script': '/Interaction/Upload',
        'multi': true,
        'auto': false,
        'method': 'post',
        'scriptData': {'Checkbox': $('#checkbox').val()},
    });

Но я всегда получаю значение "on". Неважно, если проверено или нет.

кто-нибудь может помочь? Tks.


UPDATE:

Я понял, что uploadify получает флажок при загрузке страницы. Это означает, что если я изменю флажок (или любой другой тип ввода), uploadify получит начальное значение, в данном случае «checkbox = false» .

Как я могу отправить форму с uploadify?

Tks.

Ответы [ 8 ]

54 голосов
/ 06 июля 2011

попробуй $('#checkbox').is(':checked')

23 голосов
/ 03 июля 2012

Значение флажка всегда «включено». HTML-форма отправляет значение на сервер, только если флажок установлен. Если флажок не установлен, параметр запроса будет отсутствовать. Эта семантика, по-видимому, сводит к минимуму различия между флажками и переключателями.

Форма HTML реализует следующую семантику:

if ($('#mycheckbox').is(':checked')) {
    payload['mycheckbox'] = $('#mycheckbox').val();
}

Вы можете имитировать эту семантику в Ajax или отправить флаг «флажок» напрямую следующим образом:

payload['mycheckbox'] = $('#mycheckbox').is(':checked');

Я бы порекомендовал имитировать семантику HTML-формы. Независимо от того, что делает клиент, я рекомендую следующее в коде сервера:

if mycheckbox param exists and its value is either 'true' or 'on' {  // pseudo code of course
    // mycheckbox is checked
} else {
    // mycheckbox is unchecked
}

Надеюсь, это объяснение поможет.

14 голосов
/ 24 июня 2013

Существует довольно удобный способ проверить все эти свойства элемента, такие как disabled, checked и т. Д. С помощью функции prop. Это также преобразует его в логическое значение:

$('#checkbox').prop('checked'); // -> true/false
$('#checkbox').prop('disabled'); // -> true/false
10 голосов
/ 06 июля 2011

Попробуйте это

$('#checkbox').is(':checked')
7 голосов
/ 06 июля 2011

Изменение:

$('#checkbox').val()

до

$('#checkbox').attr('checked')
1 голос
/ 09 мая 2012

У меня была такая же проблема, и я нашел это решение:

if($("input[name='yourcheckbox']").is(':checked')) {
   console.log('chb checked');
} else {
   console.log('chb not checked');
}
0 голосов
/ 16 марта 2012

Вы можете указать

if (jQuery (this) .attr ('флажок')) {// вам нужно использовать этот селектор в соответствии с вашей функцией, это может быть .click .live или еще ..

Спасибо

0 голосов
/ 06 июля 2011

Использование:

$('#checkbox').attr('checked')
...