флажок установлен на загрузке страницы и выводит вывод

62
7

Ниже мой рабочий код, но единственная проблема заключается в том, что я хочу, чтобы флажок был установлен по умолчанию и отображал вывод jquery при загрузке страницы, но он показывает только вывод, когда я перепроверяю этот флажок.

http://jsfiddle.net/pratyush141/2mq5sr1h/

$(function() {
$defaultValue = $('.total').val();
$("input[type=checkbox]").click(function(event) {
var total = 0;
$("input:checked").each(function() {
total += parseInt($(this).parent().find('.inv-total').text().substring(1));
});

if (total == 0) {
$('.total').val($defaultValue);
} else {
$('.total').val('$' + total);
}
});

})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div class="invoice">
<input type="checkbox" checked='checked' value="1" />
<span class="inv-total">$100</span>
</div>

<input type="text" class="total" value="$90" />

спросил(а) 2021-01-19T22:27:35+03:00 2 месяца, 3 недели назад
1
Решение
63

Это просто, просто снимите флажок checked = checked из флажка, а затем используйте jquery для вызова щелчка на флажке

<div class="invoice">
<input type="checkbox" value="1" />
<span class="inv-total">$100</span>
</div>

$(function () {
$defaultValue = $('.total').val();
$("input[type=checkbox]").change(function (event) {
var total = 0;
$("input:checked").each(function () {
total += parseInt($(this).parent().find('.inv-total').text().substring(1));
});

if (total == 0) {
$('.total').val($defaultValue);
} else {
$('.total').val('$' + total);
}
});

//Call the click on checkbox
$("input[type=checkbox]").click();
})

Рабочая скрипка: http://jsfiddle.net/2mq5sr1h/5/

ответил(а) 2021-01-19T22:27:35+03:00 2 месяца, 3 недели назад
44

Вы устанавливаете значение ввода в событии клика. Вам нужно установить его в $(document).ready(). Попробуйте изменить свой сценарий на это:


$(document).ready(function (){

setValue();
$("input[type=checkbox]").click(function(event) {
setValue();
});

});

function setValue()
{
$defaultValue = $('.total').val();
var total = 0;
$("input:checked").each(function() {
total += parseInt($(this).parent().find('.inv-total').text().substring(1));
});
if (total == 0) {
$('.total').val($defaultValue);
}
else {
$('.total').val('$' + total);
}
}

ответил(а) 2021-01-19T22:27:35+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема