У меня
<input type="checkbox" id="checkbox1" /> <br />
<input type="text" id="textbox1" />
и
$(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?");
}
});
});
Здесь измененное событие обновляет значение текстового поля с помощью статуса флажка. Я использую событие click, чтобы подтвердить действие, сняв флажок. Если пользователь отменит отмену, галочка будет восстановлена, но изменение даже срабатывает перед подтверждением, оставляя вещи в несогласованном состоянии (текстовое поле говорит "false", когда флажок установлен). Как я могу справиться с отменой и сохранить значение текстового поля в соответствии с состоянием проверки?
Ну, я не вижу ответа, который соответствует моему, поэтому я опубликую это. Протестировано в JSFiddle и делает то, что вы просите. Этот подход имеет дополнительное преимущество при стрельбе, когда щелчок, связанный с флажком, щелкнут,
Исходный ответ:
$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function() {
if($(this).is(":checked")) {
var returnVal = confirm("Are you sure?");
$(this).attr("checked", returnVal);
}
$('#textbox1').val($(this).is(':checked'));
});
});
Обновленный ответ:
$(document).ready(function() {
//set initial state.
$('#textbox1').val(this.checked);
$('#checkbox1').change(function() {
if(this.checked) {
var returnVal = confirm("Are you sure?");
$(this).prop("checked", returnVal);
}
$('#textbox1').val(this.checked);
});
});
this.checked
вместо $(this).is(':checked')
: jsperf.com/prop-vs-ischecked/5
Используйте mousedown
$('#checkbox1').mousedown(function() {
if (!$(this).is(':checked')) {
this.checked = confirm("Are you sure?");
$(this).trigger("change");
}
});
Большинство ответов не поймают его (предположительно), если вы используете <label for="cbId">cb name</label>
. Это означает, что когда вы нажимаете метку, он будет устанавливать флажок вместо прямого нажатия на этот флажок. (Не совсем вопрос, но различные результаты поиска приходят сюда)
<div id="OuterDivOrBody">
<input type="checkbox" id="checkbox1" />
<label for="checkbox1">Checkbox label</label>
<br />
<br />
The confirm result:
<input type="text" id="textbox1" />
</div>
В этом случае вы можете использовать:
Earlier versions of jQuery:
$('#OuterDivOrBody').delegate('#checkbox1', 'change', function () {
// From the other examples
if (!this.checked) {
var sure = confirm("Are you sure?");
this.checked = !sure;
$('#textbox1').val(sure.toString());
}
});
Пример JSFiddle с jQuery 1.6.4
jQuery 1.7+
$('#checkbox1').on('change', function() {
// From the other examples
if (!this.checked) {
var sure = confirm("Are you sure?");
this.checked = !sure;
$('#textbox1').val(sure.toString());
}
});
Пример JSFiddle с последним jQuery 2.x
Хорошо... только ради спасения головной боли (в прошлую полночь здесь) я мог бы придумать:
$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
var ans = confirm("Are you sure?");
$('#textbox1').val(ans);
}
});
Надеюсь, что это поможет
Здесь вы
Html
<input id="ProductId_a183060c-1030-4037-ae57-0015be92da0e" type="checkbox" value="true">
JavaScript
<script>
$(document).ready(function () {
$('input[id^="ProductId_"]').click(function () {
if ($(this).prop('checked')) {
// do what you need here
alert("Checked");
}
else {
// do what you need here
alert("Unchecked");
}
});
});
</script>
Для меня это отлично работает:
$('#checkboxID').click(function () {
if ($(this).attr('checked')) {
alert('is checked');
} else {
alert('is not checked');
}
})
Избавьтесь от события изменения и вместо этого измените значение текстового поля в событии клика. Вместо того, чтобы возвращать результат подтверждения, перехватите его в var. Если это правда, измените значение. Затем верните var.
Проверить флажок и проверить значение в том же цикле событий.
Попробуйте следующее:
$('#checkbox1').click(function() {
var self = this;
setTimeout(function() {
if (!self.checked) {
var ans = confirm("Are you sure?");
self.checked = ans;
$('#textbox1').val(ans.toString());
}
}, 0);
});
// this works on all browsers.
$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function(e) {
this.checked = $(this).is(":checked") && !!confirm("Are you sure?");
$('#textbox1').val(this.checked);
return true;
});
});
Попробуйте это
$('#checkbox1').click(function() {
if (!this.checked) {
var sure = confirm("Are you sure?");
this.checked = sure;
$('#textbox1').val(sure.toString());
}
});
$(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')) {
if(!confirm("Are you sure?"))
{
$("#checkbox1").prop("checked", true);
$('#textbox1').val($(this).is(':checked'));
}
}
});
});
$('#checkbox1').click(function() {
if($(this).is(":checked")) {
var returnVal = confirm("Are you sure?");
$(this).attr("checked", returnVal);
}
$('#textbox1').val($(this).is(':checked'));
});
<div id="check">
<input type="checkbox" id="checkbox1" />
<input type="text" id="textbox1" />
</div>
Я не уверен, почему все делают это настолько сложным. Это все, что я сделал.
if(!$(this).is(":checked")){ console.log("on"); }
получить значение радио через имя
$('input').on('className', function(event){
console.log($(this).attr('name'));
if($(this).attr('name') == "worker")
{
resetAll();
}
});
просто используйте событие click мой идентификатор флажка - CheckAll
$('#CheckAll').click(function () {
if ($('#CheckAll').is(':checked') == true) {
alert(";)");
}
}