jquery基于复选框更新文本框

时间:2014-04-11 10:05:52

标签: jquery checkbox textbox

我需要根据相应的复选框更新未知数量的文本框的值。

<input type="text" id="text0" />
<input type="checkbox" id="ckval1" class="checkvaloare" value="0" />
<input type="text" id="text1" class="ckval1" />
<br />
<div id="div"></div>

$("#text0").on("keyup change", function () {
    qty = $(this).val();
    if (qty === "") {
        qty = 0;
    }
    if ($('#ckval1').is(":checked")) {
        $(".ckval1").val(qty);
    } else {
        $(".ckval1").val(0);
    }
});

$('#ckval1').click(function () {
    if ($(this).is(":checked")) {
        $(".ckval1").val(qty);
    } else {
        $(".ckval1").val(0);

    }
});

我想拥有的是这样的:
每次#text0改变其值
对于每个具有 id = RANDOM_SOMETHING
的复选框 如果选中复选框
然后使用 = RANDOM_SOMETHING的文本框获取#text0的值 else(如果没有选中文本框),带有 = RANDOM_SOMETHING的文本框的值为0

如果选中复选框但没有相应的文本框,则我不需要该复选框。

有效的小提琴:http://jsfiddle.net/flish/ae629/11/
无法解决的问题是:http://jsfiddle.net/flish/ae629/12/

2 个答案:

答案 0 :(得分:0)

不需要$(“#text0”)。on(“keyup change here”,function(){

ids = [];
$('.checkvaloare').each(function () {
    ids.push(this.id);
});

$("#text0").on("keyup", function () {
    qty = $(this).val();
    if (qty === "") {
        qty = 0;
    }
    if ($('#ckval1').is(":checked")) {
        $(".ckval1").val(qty);
    } else {
        $(".ckval1").val(0);
    }

});

$("checkbox").click(function () {
    $.each(ids, function (index, value) {
        if ($("checkbox").attr("id") === value) {
            if ($('this').is(":checked")) {
                if ($("text").attr("class") === value) {
                    $('this').val(qty);
                } else {
                    $('this').val(0);
                }
            }

        }
    });
});

在这里查看演示http://jsfiddle.net/flish/ae629/12/

答案 1 :(得分:0)

像这样使用,

$("#text0").on("keyup change", function () {
    update();
});

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

function update() {
    var value = $("#text0").val();

    $("input[type=text]").not("#text0").each(function () {
        if (($(this).prev().is(":checked"))) {
            $(this).val(value);
        }
        else
        {
            $(this).val(0);
        }
    });

}

Demo