输入的javascript分布

输入的javascript分布,javascript,Javascript,我试着做两件事: 将3个输入平衡到100 $input1 = $('#input1 '); $input2 = $('#input2 '); $input3 = $('#input3 '); $input1.on('input', function () { $input2 .val(100 - this.value); $input3 .val(100 - this.value - $input2.value) }); $input2显示良好,但未输出到$

我试着做两件事:

  • 将3个输入平衡到100

    $input1 = $('#input1 ');
    $input2 = $('#input2 ');
    $input3 = $('#input3 ');
    
    $input1.on('input', function () {
            $input2 .val(100 - this.value);
            $input3 .val(100 - this.value -  $input2.value)
    });
    
    $input2
    显示良好,但未输出到
    $input3
    (NaN)

    我还尝试为input3创建一个回调,但效果也不太好

  • 如何阻止输入显示0-100范围以外的数字


  • $input2
    是jQuery包装的元素。不能直接对其调用
    value
    。您需要使用
    val()
    获取值。由于
    value
    将返回
    undefined
    ,因此最终输出为
    NaN

    更改此项:

    $input3.val(100 - this.value - $input2.value)
    
    为此:

    $input3.val(100 - this.value - $input2.val())
    
    或者,您可以从jQuery包装器中获取本机元素,并对其调用
    value
    。以下各项也应无缝工作:

    $input3.val(100 - this.value - $input2[0].value)
    

    对于#2,您可能希望查看
    input[type=number]
    ,并使用
    min
    max
    属性限制范围。

    $input2
    是jQuery包装的元素。不能直接对其调用
    value
    。您需要使用
    val()
    获取值。由于
    value
    将返回
    undefined
    ,因此最终输出为
    NaN

    更改此项:

    $input3.val(100 - this.value - $input2.value)
    
    为此:

    $input3.val(100 - this.value - $input2.val())
    
    或者,您可以从jQuery包装器中获取本机元素,并对其调用
    value
    。以下各项也应无缝工作:

    $input3.val(100 - this.value - $input2[0].value)
    

    对于#2,您可能希望查看
    输入[type=number]
    ,并使用
    min
    max
    属性限制范围。

    与@31piy的其他回答一样,您需要使用
    $input2.val()
    $input2[0].value。可以按如下方式平衡字段
    input2
    input3
    中的值

    $input1=$('#input1');
    $input2=$(“#input2”);
    $input3=$(“#input3”);
    $input1.on('input',function(){
    $input2.val(parseInt((100-this.value)/2));
    $input3.val(100-this.value-$input2.val())
    });
    
    与@31piy的其他回答一样,您需要使用
    $input2.val()
    $input2[0].value
    。可以按如下方式平衡字段
    input2
    input3
    中的值

    $input1=$('#input1');
    $input2=$(“#input2”);
    $input3=$(“#input3”);
    $input1.on('input',function(){
    $input2.val(parseInt((100-this.value)/2));
    $input3.val(100-this.value-$input2.val())
    });
    
    尝试摆脱jQuery,因为您混淆了DOM API和jQuery API。DOM是您应该学习的,而不是jQuery

    let$input1=document.querySelector('#input1');
    让$input2=document.querySelector(“#input2”);
    让$input3=document.querySelector(“#input3”);
    $input1.addEventListener('input',函数(){
    $input2.value=(100-this.value)/2;
    $input3.value=100-this.value-$input2.value;
    });
    
    
    


    尝试摆脱jQuery,因为您混淆了DOM API和jQuery API。DOM是您应该学习的,而不是jQuery

    let$input1=document.querySelector('#input1');
    让$input2=document.querySelector(“#input2”);
    让$input3=document.querySelector(“#input3”);
    $input1.addEventListener('input',函数(){
    $input2.value=(100-this.value)/2;
    $input3.value=100-this.value-$input2.value;
    });
    
    
    


    thx,但没有任何方法显示为input 3,它保留0@erezt你是说这些方法都不管用吗?如果是这样,您需要检查您的控制台是否有错误。val()解决了NaN,但是输入3仍然是0,并且不分配100减去2个输入的剩余部分。JSF在question@erezt--请参见解决#2的另一个答案。您的code.thx中存在逻辑错误,但没有为input 3显示任何方法,它仍然存在0@erezt你是说这些方法都不管用吗?如果是这样,您需要检查您的控制台是否有错误。val()解决了NaN,但是输入3仍然是0,并且不分配100减去2个输入的剩余部分。JSF在question@erezt--请参见解决#2的另一个答案。代码中存在逻辑错误。