$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function() {
$('#textbox1').val($(this).is(':checked'));
});
$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
return confirm("Are you sure?");
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1"/><br />
<input type="text" id="textbox1"/>
Di sini .change()
memperbarui nilai kotak teks dengan status kotak centang. Saya gunakan .click()
untuk mengonfirmasi tindakan di hapus centang. Jika pengguna memilih membatalkan, tanda centang dikembalikan tetapi .change()
menyala sebelum konfirmasi.
Ini meninggalkan hal-hal dalam keadaan tidak konsisten dan kotak teks mengatakan false ketika kotak centang dicentang.
Bagaimana saya bisa berurusan dengan pembatalan dan menjaga nilai kotak teks konsisten dengan kondisi cek?
javascript
jquery
event-handling
Profesor Chaos
sumber
sumber
Jawaban:
Diuji dalam JSFiddle dan lakukan apa yang Anda minta. Pendekatan ini memiliki manfaat tambahan ketika label yang terkait dengan kotak centang diklik.
Jawaban yang Diperbarui:
Jawaban asli:
sumber
this.checked
daripada$(this).is(':checked')
: jsperf.com/prop-vs-ischecked/5this.checked
jauh lebih pendek untuk menulis + javascript asli, mungkin sangat layak digunakan secara umum (selain dari ~ 200 hingga 300 kali lebih cepat).Demo
Menggunakan
mousedown
sumber
Sebagian besar jawaban tidak akan menangkapnya (mungkin) jika Anda gunakan
<label for="cbId">cb name</label>
. Ini berarti ketika Anda mengklik label itu akan menandai kotak daripada mengklik langsung pada kotak centang. (Tidak persis pertanyaan, tetapi berbagai hasil pencarian cenderung datang ke sini)Dalam hal ini Anda dapat menggunakan:
Earlier versions of jQuery:
Contoh JSFiddle dengan jQuery 1.6.4
jQuery 1.7+
Contoh JSFiddle dengan jQuery 2.x terbaru
sumber
Yah .. hanya demi menyelamatkan sakit kepala (sudah lewat tengah malam di sini), saya bisa datang dengan:
Semoga ini bisa membantu
sumber
Bagi saya ini sangat bagus:
sumber
Ini dia
Html
JavaScript
sumber
Singkirkan acara perubahan, dan alih-alih ubah nilai kotak teks di acara klik. Daripada mengembalikan hasil konfirmasi, tangkap dalam var. Jika benar, ubah nilainya. Lalu kembalikan var.
sumber
Klik kotak centang dan memeriksa nilai dalam loop peristiwa yang sama adalah masalahnya.
Coba ini:
Demo: http://jsfiddle.net/mrchief/JsUWv/6/
sumber
jika Anda menggunakan iCheck Jquery gunakan kode di bawah ini
sumber
Coba ini
sumber
sumber
sumber
sumber
Jawaban terlambat, tetapi Anda juga dapat menggunakan
on("change")
sumber
cukup gunakan klik event id kotak centang saya adalah CheckAll
sumber
dapatkan nilai radio berdasarkan nama
sumber
Saya tidak yakin mengapa semua orang membuat ini sangat rumit. Ini semua yang saya lakukan.
sumber
sumber