1

我需要一些关于 javascript 或 jQuery 的帮助。

我有三 (3) 个要过滤的输入字段(三个字段的总和)。

3个输入字段的总和必须是100。如果用户填写超过100,会自动改变总和为100的值。

你可以看到这个例子

<input type="text" name="text1" size="3"> text1<br />
<input type="text" name="text2" size="3"> text2<br />
<input type="text" name="text3" size="3"> text3<br />

    <p>The maximum value of total 3 fields above is 100.</p>
    <pre>example 1 :

    text1 : 20;
    text2 : 30;
    text3 : 50; (will automatically filled with 50 because the total value must 100)</pre>
    <pre>example 2 :

    text1 : 37;
    text2 : 60;
    text3 :  3; (will automatically filled with 3 because the total value must 100)</pre>

谢谢你帮助我,我需要它:)

4

4 回答 4

3
$("input:lt(2)").on("change", function() {
    var other = $("input:lt(2)").not(this).val();
    if (other.length)
        $("input:eq(2)").val(100 - this.value - other);
});

演示:http: //jsfiddle.net/D5F3p/3/

于 2013-05-13T10:07:19.730 回答
1

这是我能想到的最简单的事情!

$(document).ready(function(){
    $('input[name="text2"]').blur(function(){
        $('input[name="text3"]').val(100 - $('input[name="text1"]').val() - $('input[name="text2"]').val());
    });
});

IMO,您可以执行以下操作:

  1. 两个输入只给出两个字符。不允许更多!
  2. 您还需要检查两个输入的总和是否不应超过 101!
  3. 保持输入 2 只读,直到在输入 1 中输入了某些内容。
  4. 保持输入 3 始终为只读。

小提琴:http: //jsfiddle.net/praveenscience/D5F3p/5/

于 2013-05-13T10:04:03.373 回答
1
<head>
<script type="text/javascript">
function check() {
    var sum = 0;
    var inputs = $(".test");
    for (i = 0; i < inputs.length; i++) {
        if (inputs[i].value == parseInt(inputs[i].value)) {
            sum += parseInt(inputs[i].value);
            if (sum > 100) {
                sum -= parseInt(inputs[i].value);
                inputs[i].value =  100-sum;

             }
         }
    }

 }



</script>
</head>
<body>
<input type="text" onkeyup="check()" class="test" size="3"> 
<input type="text" onkeyup="check()" class="test" size="3">
<input type="text" onkeyup="check()" class="test" size="3"> 
于 2013-05-13T10:17:35.870 回答
0
   $(function(){

$('input[name="text1"]').keyup(function(){

    var text1Value = $('input[name="text1"]').val();
    if(text1Value >=100)
    {
     $('input[name="text1"]').val(100);
     $('input[name="text2"]').val('');
     $('input[name="text3"]').val('');
     $('input[name="text2"]').attr('disabled','disabled'); 
     $('input[name="text3"]').attr('disabled','disabled'); 
    }
    else
    {
     $('input[name="text2"]').removeAttr('disabled'); 
     $('input[name="text3"]').removeAttr('disabled');
    }
});
$('input[name="text2"]').keyup(function(){
    var text1Value = parseInt($('input[name="text1"]').val());
    var text2Value = parseInt($('input[name="text2"]').val());
    if(isNaN(text1Value))
    {
     text1Value =0;
    }

    if(isNaN(text2Value))
    {
     text2Value =0;
    }
    var total = text1Value + text2Value;

    if(total >=100)
    {
     $('input[name="text2"]').val(100-text1Value);
     $('input[name="text3"]').val('');
     $('input[name="text3"]').attr('disabled','disabled'); 
    }
    else
    {
     $('input[name="text3"]').removeAttr('disabled');
     $('input[name="text3"]').val(100-total);
    }
});

});

我正在检查所有文本框的总和是否超过 100,然后在最后输入的文本框中进行更正,并禁用下一个文本框。

于 2013-05-13T10:36:59.563 回答