2016-05-24 13 views
2

Ich möchte eine Umfrage auf einer Website mit einer Frage und drei möglichen Antworten machen.Deaktivieren Sie ein Kontrollkästchen mit Bedingungen

Das Problem ist, dass ich Probleme mit dem Check/Uncheck habe, möchte ich nur eine Antwort überprüft haben, wenn also der Benutzer auf eine Antwort klickt und er bereits eine andere überprüft hat, behält es nur die letzte ein. Hier

ist das, was ich getan habe:

$("input:checkbox").click(function() { 
    if($(this).is(':checked')){ 
     var iSurveyId = $(this).closest('div').attr('name'); 
     var iAnswerId = $(this).closest('p').attr('value'); 
     var bIsChecked = 'true'; 

Wenn der Benutzer klicken auf eine Checkbox, ich werde die Umfrage-ID erhalten, die in dem Namen meines div und die ID ist meine Antwort, die ist im Namen meines Absatzes.

Ich benutze jQuery 1.1.12 so kann ich nicht jede Funktion für Beispiel verwenden ich kann .prop() nicht verwenden.

+2

Verwendung Radio-Buttons statt Checkbox des – Hazonko

+0

Ich werde tun, dass dies wahr ist, dass es viel mehr klingt logisch, aber ich bin noch auf der Suche nach einer Antwort. Dies könnte meinem Verständnis helfen. –

+1

Nun würde Ihr Markup definieren, wie Sie das Kontrollkästchen ankreuzen, aber es ist einfach genug, Kontrollkästchen zu aktivieren/deaktivieren: '$ (". Checkbox "). Attr (" checked ", false);' – Hazonko

Antwort

0

Sie können die Eingabetyp Radio anstelle von Kontrollkästchen verwenden, so dass alle Benutzer nur eine Antwort auswählen, oder deaktivieren Sie alle Kontrollkästchen erste ähnliche

$("input:checkbox").click(function() { 
    $('input:checkbox').removeAttr('checked'); 
    $(this).attr('checked', 'checked'); 
} 

Die oben sollte entfernt, um das Attribut checked aus allen Auswahlbox und weisen Sie das Attribut checked auf den geklickt ein, oder wenn Sie mehrere Fragen haben, jeweils mit mehreren Antworten können Sie die Kontrollkästchen in einem div setzen und den Code ändern:

$("input:checkbox").click(function() { 
    $('#div_id input:checkbox').removeAttr('checked'); 
    $(this).attr('checked', 'checked'); 
} 
+0

Ihr Code funktioniert, aber der ausgewählte Code wird nicht beibehalten (der letzte wird nicht überprüft). –

0

mit diesem einfachen Code

$("input:checkbox").click(function() { 
 
    var thisChecked = $(this)[0].checked; 
 
    $("input:checkbox").removeAttr('checked'); 
 
    
 
    if (thisChecked) 
 
     $(this).attr("checked", true); 
 
    else 
 
     $(this).attr("checked", false); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script> 
 
<div> 
 
    <input type="checkbox" /> 
 
    <span>Item 1</span> 
 
</div> 
 
<div> 
 
    <input type="checkbox" /> 
 
    <span>Item 2</span> 
 
</div> 
 
<div> 
 
    <input type="checkbox" /> 
 
    <span>Item 3</span> 
 
</div> 
 
<div> 
 
    <input type="checkbox" /> 
 
    <span>Item 4</span> 
 
</div>

+1

er kann nicht wegen seiner jQuery-Version prop verwenden. ändere es in attr. – Hazonko

+0

In der Frage, sie sagten, sie können nicht verwenden. Prop() –

+0

Ok, ich bearbeite Antwort. – Mohammad

Verwandte Themen