2016-09-30 4 views
0

Ich habe ein Kontrollkästchen, das überprüft werden muss, sobald Benutzer auf das Eingabefeld klicken.Jquery Checkbox bleibt beim Klick auf

Ausgabe: Beim ersten Klick ist das Kontrollkästchen aktiviert, was gut funktioniert. Wenn die Eingabe erneut angeklickt wird, wird das Kontrollkästchen deaktiviert.

Output benötigt:

Ich will das Kontrollkästchen aktiviert zu bleiben, da dies löst eine Änderungsereignis.

Ich habe viele Beispiele gesucht, um diese Lösung zu finden, konnte sie aber nicht finden.

Jede Hilfe wird geschätzt.

Bitte Siehe Fiddle:

http://jsfiddle.net/nrYec/194/

JS:

$('input').click(function() { 
    $('#x').text(this.checked ? "is checked" : "is not checked"); 
}); 
$('.b2').click(function() { 
     $('.trigger').click(); 
}); 
+0

Wollen Sie damit sagen, dass in jedem Textfeld klicken, sollten Sie das Kontrollkästchen gesetzt, wenn es geprüft ist nicht schon, aber das Klicken auf das Kontrollkästchen selbst sollte das Abwählen erlauben? – nnnnnn

+0

Also, wenn Sie auf die Textfelder klicken, warum schalten Sie den Checkbox-Status? Was genau soll hier passieren? – epascarello

+0

@nnnnnn das ist korrekt das Klicken des Textfelds sollte nur in einer Richtung arbeiten, das Kontrollkästchen aktiviert lassen.es sei denn, es ist manuell vom Benutzer deaktiviert. – Seansa

Antwort

2

Versuchen Sie folgendes:

$('.b2').click(function() { 
 
    if (!$('.trigger').prop('checked')) { 
 
     $('.trigger').prop('checked', 'true'); 
 
    }; 
 
}); 
 

 
$('input').click(function() { 
 
    $('#x').text($('.trigger').prop('checked') ? "is checked" : "is not checked"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input class='trigger' type='checkbox'> 
 
<input class='b2' type='text' name='something'> 
 
<input class='b2' type='text' name='something'> 
 
<div id='x'></div>

+0

Danke, das hat funktioniert. – Seansa

0
$('input').click(function() { 
    if ($(this).attr('type') !== "checkbox") 
    $('input[type="checkbox"]').prop('checked', true) 
}); 

Diese auf das Kontrollkästchen zwingen wird, überprüft werden, wenn ein anderer Eingang geklickt wird, verhalten sich aber normal, wenn es wird geklickt.

+0

, aber das würde Sie davon abhalten, das Kontrollkästchen zu deaktivieren. – epascarello

1

Eine Option ist es in einer if Aussage zu wickeln:

JS Fiddle

$('.b2').click(function() { 
    var trigger = $('.trigger'); 
    if (!$('.trigger').is(':checked')) { 
    trigger.click(); 
    } 
}); 

$('input').click(function() { 
    // And need to check if the checkbox (not any input) is checked here 
    $('#x').text($('.trigger').is(':checked') ? "is checked" : "is not checked"); 
}); 
3

Sie in den Kommentaren klargestellt, dass Sie einen Klick in die Textfelder wollen Sie das Kontrollkästchen überprüfen, aber auf für Klicks Das Kontrollkästchen selbst funktioniert normal. Also nicht ein Click-Ereignis auslösen, nur direkt die checked Unterkunft Checkbox gesetzt:

$('.b2').click(function() { 
 
    $('.trigger').prop("checked", true); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input class='trigger' type='checkbox'> 
 
<input class='b2' type='text' name='something'> 
 
<input class='b2' type='text' name='something'> 
 
<div id='x'></div>

0

Der beste Weg, Bleibt Ihr Kontrollkästchen aktiviert ist ein Handler onchange Listener auf Ihrem ch hinzuzufügen eckbox und es nur gesetzt Javascript Attribut geprüft = true

$('.trigger').on('change', function() { 
$('.trigger')[0].checked = true; 
}) 
0

Dokument ref: prop

$('.b2').on('click',function() { 
 
    $('.trigger').prop("checked", true); 
 
}).on('blur',function(){ 
 
    if($(this).val().trim().length === 0){ 
 
    $('.trigger').prop("checked", false); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class='trigger' type='checkbox'> 
 
<input class='b2' type='text' name='something'> 
 
<input class='b2' type='text' name='something'> 
 
<div id='x'></div>