2016-06-16 25 views
1

Ich versuche, history.pushState mit einer Ajax-Suche zu verwenden, aber es ist nicht speichern Checkbox-Status.Gibt es eine Möglichkeit, den Checkbox-Status von .html()

Dies ist ein Beispiel dafür, wie ich das Formular an die pushstate speichere:

history.pushState({ FilterSearch: container.html() }, 'search', formAction); 

Wo container ist die Form mit Kontrollkästchen und Ergebnisse und formAction ist die URL. Dies wird bei Änderung der Checkbox (im Ergebnis des Ajax Calls) aufgerufen.

Ich glaube, das Problem ist, dass .html scheint nicht den aktualisierten Status der Checkbox zu bekommen - siehe das Schnipsel unten.

$('#test1').on('change', function() { 
 
\t console.log($('#test').html()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="test"> 
 
    <input type="checkbox" id="test1" value="test"> 
 
</div>

Wenn Sie an der Konsole aussehen, wie Sie die Eingabe überprüfen und deaktivieren, können Sie es sehen nie das checked Attribut muss hinzugefügt werden.

Gibt es trotzdem, dass der Pushstate sich an den Status der Checkboxen erinnert?

+1

Die staue von Kontrollkästchen (oder einem anderen Objekt) in der DOM-Struktur nicht in dem HTML-Code gehalten. –

+0

ist nicht $ ('# test'). Html() 'ein Objekt im DOM aufrufen? – Pete

+0

@Pete dann müssen Sie das Attribut explizit anwenden, denke ich. – Jai

Antwort

0

Dank der Kommentare von Adrenaline-DJ und Jai für den Hinweis mich in die richtige Richtung. Ich konnte das Attribut setzen und dann .html rufen Sie wie folgt vor:

$('#test1').on('change', function() { 
 
    if (this.checked) { 
 
     $(this).attr('checked', true); 
 
    } else { 
 
     $(this).removeAttr('checked'); 
 
    } 
 
    console.log($('#test').html()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="test"> 
 
    <input type="checkbox" id="test1" value="test"> 
 
</div>

0

können Sie überprüfen, ob ein Kontrollkästchen aktiviert ist oder nicht durch .is(':checked') verwendet, gibt es wahr oder falsch

$('#test1').on('change', function() { 
 
\t console.log($('#test1').is(':checked')); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="test"> 
 
    <input type="checkbox" id="test1" value="test"> 
 
</div>

+0

Dies beantwortet die Frage nicht. – Jai

+0

Leider kann ich das nicht verwenden, da ich das HTML in den Pushstate dränge, also muss ich '.html' verwenden – Pete