Javascript 基于复选框选择更新文本框jquery

Javascript 基于复选框选择更新文本框jquery,javascript,jquery,html,checkbox,jsf-2.2,Javascript,Jquery,Html,Checkbox,Jsf 2.2,我想用Jquery实现以下功能 有多个行程,每个行程都有复选框和文本框 每当选中复选框时,文本框中与该复选框对应的值必须更新为“1” 每当客户在文本框中输入时,应选中复选框 <input type="checkbox" id="ckval1" class="checkvaloare" />Trip 1 <a href="">sad</a><a href="">ssad</a> <input type="text" id="te

我想用Jquery实现以下功能

  • 有多个行程,每个行程都有复选框和文本框
  • 每当选中复选框时,文本框中与该复选框对应的值必须更新为“1”
  • 每当客户在文本框中输入时,应选中复选框

    <input type="checkbox" id="ckval1" class="checkvaloare" />Trip 1 <a 
    href="">sad</a><a href="">ssad</a>
    <input type="text" id="text1" class="ckval" size="2" />
    <br/>
    <input type="checkbox" id="ckval2" class="checkvaloare" />Trip 2 <a  
    href="">sad</a><a href="">sassad</a>
    <input type="text" id="text2" class="ckval" size="2" />
    
    但这不起作用,当我使用JSF标记
    时,它也不起作用

    next()
    仅获取下一个同级元素。在您的例子中,复选框后面的下一个同级元素是标记。在所需输入之前有两组标记,这就是为什么它在3'next()之后适用于您。当然,使用3nexts并不是很好,如果您在其中添加了另一个元素,它将很容易被破坏

    使用


    它将查找下一个ckval输入,而不是下一个元素。

    您需要使用
    nextAll
    prevAll
    (以及
    第一个
    伪选择器),因为您的复选框和文本框之间有锚定

    我还将
    单击
    事件更改为
    更改

    $(function () {
        $("input[type=checkbox]").on('change', function () {
            $(this).nextAll('.ckval:first').val($(this).is(':checked') ? '1' : '0');
        });
        $("input[type=text]").on('keyup', function () {
            if ($(this).val()) {
                $(this).prevAll('.checkvaloare:first').prop('checked', true);
            } else {
                $(this).prevAll('.checkvaloare:first').prop('checked', false);
            }
        });
    });
    

    功能是否在单击时启动?是。。onclick是事件我的意思是在click事件中放置一个警报或日志,以确保click处理程序正确无误。。但错误是。。它没有通过
    .next()
    获取输入字段。如果我使用
    .next()
    三次,它就会工作了啊,明白了。我将在下面回答。
     nextAll('.ckval:first')
    
    $(function () {
        $("input[type=checkbox]").on('change', function () {
            $(this).nextAll('.ckval:first').val($(this).is(':checked') ? '1' : '0');
        });
        $("input[type=text]").on('keyup', function () {
            if ($(this).val()) {
                $(this).prevAll('.checkvaloare:first').prop('checked', true);
            } else {
                $(this).prevAll('.checkvaloare:first').prop('checked', false);
            }
        });
    });