544 Stimmen

Wie kann ich die Markierung eines Optionsfeldes aufheben?

Ich habe eine Gruppe von Optionsfeldern, die ich deaktivieren möchte, nachdem ein AJAX-Formular mit jQuery übermittelt wird. Ich habe die folgende Funktion:

function clearForm(){
  $('#frm input[type="text"]').each(function(){
      $(this).val("");  
  });
  $('#frm input[type="radio":checked]').each(function(){
      $(this).checked = false;  
  });
 }

Mit Hilfe dieser Funktion kann ich die Werte in den Textfeldern löschen, aber ich kann die Werte der Optionsfelder nicht löschen.

Übrigens, ich habe auch versucht $(this).val(""); aber das hat nicht funktioniert.

20voto

Laurynas Punkte 3759

Neuschreiben von Igors Code als Plugin.

Verwendung:

$('input[type=radio]').uncheckableRadio();

Plugin:

(function( $ ){

    $.fn.uncheckableRadio = function() {

        return this.each(function() {
            $(this).mousedown(function() {
                $(this).data('wasChecked', this.checked);
            });

            $(this).click(function() {
                if ($(this).data('wasChecked'))
                    this.checked = false;
            });
        });

    };

})( jQuery );

18voto

Sylvain Kocet Punkte 171

Für Radio und Radiogruppe:

$(document).ready(function() {
    $(document).find("input:checked[type='radio']").addClass('bounce');   
    $("input[type='radio']").click(function() {
        $(this).prop('checked', false);
        $(this).toggleClass('bounce');

        if( $(this).hasClass('bounce') ) {
            $(this).prop('checked', true);
            $(document).find("input:not(:checked)[type='radio']").removeClass('bounce');
        }
    });
});

14voto

Patrick Rietveld Punkte 141

Versuchen Sie es hiermit, das wird den Zweck erfüllen:

        $(document).ready(function() {
           $("input[type='radio']").mousedown(function(e) {
                if ($(this).attr("checked") == true) {
                   setTimeout("$('input[id=" + $(this).attr('id') + "]').removeAttr('checked');", 200);}
                else {
                    return true
                }
            });
        });

12voto

rahul Punkte 179143

Versuchen Sie

$(this).attr("checked" , false );

11voto

Almir Campos Punkte 2445

Sie können das Verhalten des Radiobuttons auch nur mit Kontrollkästchen simulieren:

<input type="checkbox" class="fakeRadio" checked />
<input type="checkbox" class="fakeRadio" />
<input type="checkbox" class="fakeRadio" />

Dann können Sie diesen einfachen Code für sich arbeiten lassen:

$(".fakeRadio").click(function(){
    $(".fakeRadio").prop( "checked", false );
    $(this).prop( "checked", true );
});

Es funktioniert gut und Sie haben mehr Kontrolle über das Verhalten der einzelnen Schaltflächen.

Sie können es selbst ausprobieren unter: http://jsfiddle.net/almircampos/n1zvrs0c/

Mit dieser Abzweigung können Sie auch die in einem Kommentar geforderte Auswahl aufheben: http://jsfiddle.net/5ry8n4f4/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X