Jak zresetować radiobuttony w jQuery tak aby nie było zaznaczone
Mam przyciski radiowe w HTML tak:
<td>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
</td>
Jest to znacznik formularza, a gdy użytkownik przesyła formularz, chcę, aby wszystkie przyciski radiowe wróciły do wartości domyślnej. To znaczy, że nikt nie sprawdził.
Mam ten kod ale daje błąd mówiąc [0] is null or not an object
$('input[@name="correctAnswer"]')[0].checked = false;
$('input[@name="correctAnswer"]')[1].checked = false;
$('input[@name="correctAnswer"]')[2].checked = false;
$('input[@name="correctAnswer"]')[3].checked = false;
Robię to w IE 6. 12 answers
W wersjach jQuery przed 1.6 użyj:
$('input[name="correctAnswer"]').attr('checked', false);
W wersjach jQuery po 1.6 należy użyć:
$('input[name="correctAnswer"]').prop('checked', false);
Ale jeśli używasz 1.6.1+ możesz użyć pierwszego formularza(patrz uwaga 2 poniżej).
Uwaga 1: Ważne jest, aby drugi argument był false , a nie "false" ponieważ "false" nie jest wartością falsy. tj.
if ("false") {
alert("Truthy value. You will see an alert");
}
Uwaga 2: od wersji jQuery 1.6.0 istnieją teraz dwie podobne metody, .attr
i .prop
to robi dwie powiązane, ale nieco różne rzeczy. Jeśli w tym konkretnym przypadku powyższa porada działa, jeśli używasz wersji 1.6.1+. Powyższe nie będzie działać z 1.6.0, jeśli używasz 1.6.0, powinieneś uaktualnić. Jeśli chcesz poznać szczegóły, Czytaj dalej.
Szczegóły: podczas pracy z prostymi elementami HTML DOM, do elementu DOM są dołączone właściwości (checked
, type
, value
, etc), które zapewniają interfejs do stanu uruchomionej strony HTML. Jest też .getAttribute
/.setAttribute
interfejs, który zapewnia dostęp do wartości atrybutów HTML, jak podano w HTML. Przed 1.6 jQuery zatarło rozróżnienie, dostarczając jedną metodę, .attr
, aby uzyskać dostęp do obu typów wartości. jQuery 1.6 + dostarcza dwie metody, .attr
i .prop
, aby odróżnić te sytuacje.
.prop
pozwala ustawić właściwość elementu DOM, podczas gdy .attr
pozwala ustawić wartość atrybutu HTML. Jeśli pracujesz z plain DOM i ustaw właściwość checked, elem.checked
, na true
lub false
zmieniasz wartość bieżącą (to, co widzi użytkownik), a zwrócona wartość śledzi stan na stronie. elem.getAttribute('checked')
zwraca jednak tylko stan początkowy(i zwraca 'checked'
lub undefined
w zależności od stanu początkowego z HTML). W 1.6.1 + użycie .attr('checked', false)
robi zarówno elem.removeAttribute('checked')
, jak i elem.checked = false
, ponieważ zmiana spowodowała wiele problemów ze wsteczną kompatybilnością i nie można powiedzieć, czy chcesz ustawić atrybut HTML, czy właściwość DOM. Więcej informacji można znaleźć w dokumentacji dla .prop .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-11 16:40:30
Najlepszy sposób na ustawienie stanu radiobuttonów w jquery:
HTML:
<input type="radio" name="color" value="orange" /> Orange
<input type="radio" name="color" value="pink" /> Pink
<input type="radio" name="color" value="black" /> Black
<input type="radio" name="color" value="pinkish purple" /> Pinkish Purple
JQuery (1.4+) kod do wstępnego wybrania jednego przycisku:
var presetValue = "black";
$("[name=color]").filter("[value='"+presetValue+"']").attr("checked","checked");
W Jquery 1.6+ kod the .preferowana jest metoda prop ():
var presetValue = "black";
$("[name=color]").filter("[value='"+presetValue+"']").prop("checked",true);
Aby odznaczyć przyciski:
$("[name=color]").removeAttr("checked");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-13 15:31:38
Twój problem polega na tym, że selektor atrybutów Nie zaczyna się od @
.
Spróbuj tego:
$('input[name="correctAnswer"]').attr('checked', false);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-10 17:52:36
$('#radio1').removeAttr('checked');
$('#radio2').removeAttr('checked');
$('#radio3').removeAttr('checked');
$('#radio4').removeAttr('checked');
Or
$('input[name="correctAnswer"]').removeAttr('checked');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-20 13:05:21
W końcu po wielu testach, myślę, że najwygodniejszym i najskuteczniejszym sposobem ustawienia jest:
var presetValue = "black";
$("input[name=correctAnswer]").filter("[value=" + presetValue + "]").prop("checked",true);
$("input[name=correctAnswer]").button( "refresh" );//JQuery UI only
Jest wymagane odświeżenie obiektu JQueryUI.
Pobranie wartości jest łatwe:
alert($('input[name=correctAnswer]:checked').val())
Testowane z JQuery 1.6.1, jQuery UI 1.8.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-30 12:37:00
Wiem, że to jest stare i że jest to trochę off topic, ale załóżmy, że chcesz odznaczyć tylko określone przyciski radiowe w kolekcji:
$("#go").click(function(){
$("input[name='correctAnswer']").each(function(){
if($(this).val() !== "1"){
$(this).prop("checked",false);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
<input type="button" id="go" value="go">
A jeśli masz do czynienia z listą radiobutton, możesz użyć selektora: checked, aby uzyskać tylko ten, który chcesz.
$("#go").click(function(){
$("input[name='correctAnswer']:checked").prop("checked",false);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
<input type="button" id="go" value="go">
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-29 00:07:25
Zestaw przycisków radiowych sprawdzany przez jquery:
<div id="somediv" >
<input type="radio" name="enddate" value="1" />
<input type="radio" name="enddate" value="2" />
<input type="radio" name="enddate" value="3" />
</div>
Kod Jquery:
$('div#somediv input:radio:nth(0)').attr("checked","checked");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-24 00:47:42
Jeśli chcesz wyczyścić wszystkie przyciski radiowe w DOM:
$('input[type=radio]').prop('checked',false);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-12 22:19:47
<div id="radio">
<input type="radio" id="radio1" name="radio"/><label for="radio1">Bar Chart</label>
<input type="radio" id="radio2" name="radio"/><label for="radio2">Pie Chart</label>
<input type="radio" id="radio3" name="radio"/><label for="radio3">Datapoint Chart</label>
</div>
$('#radio input').removeAttr('checked');
// Refresh the jQuery UI buttonset.
$( "#radio" ).buttonset('refresh');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-20 12:52:19
Ustaw wszystkie przyciski opcji z powrotem na domyślne:
$("input[name='correctAnswer']").checkboxradio( "refresh" );
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-12 13:38:21
Gdzie masz: <input type="radio" name="enddate" value="1" />
Po value = " 1 " Możesz również po prostu dodać unchecked =" false" />
Linia będzie wtedy:
<input type="radio" name="enddate" value="1" unchecked =" false" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-12 13:50:58
Dlaczego nie:
$("#radio1, #radio2, #radio3, #radio4").checked = false;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-10 17:48:23