【问题标题】:Update textboxes based on checkboxes Jquery基于复选框 Jquery 更新文本框
【发布时间】:2015-03-11 12:24:07
【问题描述】:

我想用 Jquery 实现以下目标

  • 有多个行程,每个行程都有复选框和文本框。
  • 每当检查复选框时,必须将与该复选框相对应的文本框中的值更新为“ 1”。
  • 无论客户在文本框中输入什么类型,都应选中复选框。
  • 客户总共不能选择超过10个行程。 (即如果两个输入框的总数都是 10 则应显示错误或警告。

我尝试了以下代码,但它不起作用

<input type="checkbox" id="ckval1" class="checkvaloare" /> Trip 1
<input type="text" id="text1" class="ckval1" size="2" />
<br />
<input type="checkbox" id="ckval2" class="checkvaloare" /> Trip 2
<input type="text" id="text2" class="ckval2" size="2" />

JQuery 如下:

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

function update() {
   $("input[type=text]").each(function () {
    if (($(this).is(":checked"))) {
        $(this).val(1);
    }
    else
    {
        $(this).val(0);
    }
  });
}

【问题讨论】:

    标签: javascript jquery checkbox


    【解决方案1】:

    使用.next() 获取下一个兄弟元素,.prev() 获取上一个兄弟元素。

    试试

    $(function () {
        $("input[type=checkbox]").on('click', function () {
    
            $(this).next().val($(this).is(':checked') ? '1' : '0');
        });
        $("input[type=text]").on('keyup', function () {
            if (+ $(this).val()) {
                alert('f');
                $(this).prev().prop('checked', true);
            } else {
                $(this).prev().prop('checked', false);
            }
        });
    });
    

    演示:http://jsfiddle.net/tamilcselvan/m242bo5z/2/

    【讨论】:

    • 这行得通......还有两个条件呢?每当我输入一些值时,相应的复选框就会被选中
    • 您的小提琴中有错字:if (+ $(this).val()) { -- + 打破了它。删除它,效果很好。
    • @TamilSelvan 看看你是否可以解决这个问题来解决 OP 的第四个条件。它有效,但如果在第三个文本框中输入文本则无效:jsfiddle.net/m242bo5z/3 现在交给你...
    • @Tamil Selvan .... 如果我的 HTMl 更改为 Trip 1 伤心 .. 那么我必须使用两个.next() 但我不想使用.next()两次
    【解决方案2】:

    两个问题:

    • 您无需单击即可更改复选框
    • 在您的函数中,您使用 $this) 来指代复选框,但它指的是文本输入

    试试这样的:

    $("input[type=checkbox]").change(function (e) {
       update(e.target);
    });
    
    function update(el) {
       $("input[type=text]").each(function () {
        if (($(el).is(":checked"))) {
            $(this).val(1);
        }
        else
        {
            $(this).val(0);
        }
      });
    }
    

    【讨论】:

    • 与您的解决方案.. 两个文本框值都得到更新。所以不被接受。这是小提琴http://jsfiddle.net/ae629/25/
    • 使用当前的html,您无法分辨哪个复选框与哪个文本框搭配。您需要将每一对包装在一个容器元素中,然后通过选择复选框的父级进行更新,然后在其中找到文本框。
    • 我们可以使用 .next() 很好地做到这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2012-03-06
    • 2013-11-17
    • 2014-10-10
    • 1970-01-01
    • 2023-01-16
    相关资源
    最近更新 更多