2011-07-06 10 views
26

Hy!checkbox jest zawsze "włączony"

Kiedy Uploadify wysłać plik do działania, muszę wiedzieć, czy checbox jest sprawdzany, czy nie, tak zrobiłem:

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

ale wynos uzyskać wartość „On”. Nie ważne, czy jest sprawdzane, czy nie.

Czy ktoś może pomóc? Tks.


UPDATE:

zdałem sobie sprawę, że jest coraz Uploadify pole wyboru, jeśli strona jest loaded.This oznacza, że ​​jeśli zmienię pole (lub dowolny inny typ wejścia) do zakładu Uploadify dostanie wartość początkowa, w tym przypadku "checkbox = false".

Jak wysłać formularz z funkcją uploadify?

Tks.

Odpowiedz

7

Zmiana:

$('#checkbox').val() 

do

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

Zawsze otrzymuję "fałszywe". Nie wiem dlaczego. – Thiago

44

spróbować $('#checkbox').is(':checked')

+4

Zawsze uzyskuję "fałszywe" używanie tego. – Thiago

+0

Działa za każdym razem. – kd7iwp

+0

Dzięki! Działa to również dla bootstrap icheckbox. –

0

Zastosowanie:

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

Spróbuj

$('#checkbox').is(':checked') 
+0

Podoba mi się, w jaki sposób ta metoda daje wartość logiczną. – kd7iwp

+1

To jest jedyna metoda, która działa w moim przypadku. Dzięki! – gumkins

-1

Można dać

if (jQuery (this) .attr ('sprawdzone')) {// u musiał użyć tego przełącznika w zależności od funkcji może być .Kliknij .live lub innego. .

Dzięki

0

prostu miałem ten sam problem i znaleźć rozwiązanie to: wartość

if($("input[name='yourcheckbox']").is(':checked')) { 
    console.log('chb checked'); 
} else { 
    console.log('chb not checked'); 
} 
17

pole wyboru jest zawsze 'na'. Formularz HTML wysyła wartość do serwera tylko wtedy, gdy pole wyboru jest zaznaczone. Jeśli pole nie jest zaznaczone, parametr żądania będzie nieobecny. Ta semantyka najwyraźniej minimalizuje różnice między polami wyboru i przyciskami radiowymi.

formularza HTML realizuje następujące semantyka:

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

Można też naśladować to semantykę w Ajax lub wysłać „sprawdzony” flagę bezpośrednio w następujący sposób:

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

polecam naśladować "semantyka formularza HTML. Niezależnie od tego, co robi klient, polecam w kodzie serwera:

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

Mam nadzieję, że to wyjaśnienie pomaga.

+0

Ta semantyka jest bardzo myląca ... Mam nadzieję, że ułatwiło to komuś życie! Nawet wyłączone pole wyboru ma wartość "on" ... –

+0

Bardzo myląca implementacja - ale ta odpowiedź pomogła mi zrozumieć, dlaczego val() zawsze zwraca "włączone" dla pól wyboru. –

12

Istnieje bardzo przydatny sposób sprawdzania wszystkich właściwości elementu, takich jak disabled, checked itp. Za pomocą funkcji prop. To również konwertuje go na wartość logiczną:

$('#checkbox').prop('checked'); // -> true/false 
$('#checkbox').prop('disabled'); // -> true/false 
+0

Przełóżmy to na górę :) – TheRealChx101

+0

wtf @ chx101! czego odemnie chcesz? : P: D –

+0

Vanilla JS: var isChecked = elDom.checked // _> true/false – l0rin