单独数字字段的总和不应该> 100%

时间:2017-07-10 06:10:08

标签: jquery

我正在开展一项有多项调查的项目。其中一个包含几个问题,用户必须输入数字输入作为他们的响应,如果按下提交按钮时响应的总和超过100%,他们将得到错误消息。 (该调查包含网页中的多个问题。)。

我正在为这样一个有数字输入字段的问题分享回复的HTML

<div class="input_row cell_wrapper row col s12" question-input-
    template="number" question-input-id="qid:258 group_id:1 input_value:1">
                <div class="input-field col s12">
                    <input name="qid:258 group_id:1 input_value:1" type="number" 
                    class="validate">
                </div>  
    </div>

    <div class="input_row cell_wrapper row col s12" question-input-
    template="number" question-input-id="qid:258 group_id:1 input_value:2">
                <div class="input-field col s12">
                    <input name="qid:258 group_id:1 input_value:2" type="number" 
                    class="validate">
                </div>  
    </div>

    <div class="input_row cell_wrapper row col s12" question-input-
    template="number" question-input-id="qid:258 group_id:1 input_value:3">
                <div class="input-field col s12">
                    <input name="qid:258 group_id:1 input_value:3" type="number" 
                    class="validate">
                </div>      
    </div>

我正在尝试使用jQuery将上述文本输入字段的总和验证为100%(不超过该值)。请注意,这些字段不是特定表单的一部分。我所研究和提及的内容几乎都基于表格,例如StackExchangeStackOverflow

有什么想法吗?

它会起作用吗?

var sumOfValues = 0;
$(".validate").each(function(){

    sumOfValues += $(this).val();
});
if(sumOfValues == 100)
{
    //alert message
}
else
{
    //alert message
}

2 个答案:

答案 0 :(得分:0)

您需要将值转换为数字。否则你是连接字符串,而不是添加数字。

sumOfValues += parseInt($(this).val(), 10);

答案 1 :(得分:0)

使用此jquery脚本。

$(document).ready(function(){
    var dist = 100;
    var numTotal = 0;
    $("input[type='number']").change(function(){
        var numTotal = 0;
        $("input[type='number']").each(function(){
            var textVal = $(this).val()
            if ($.trim(textVal) != "") {
                numTotal = parseFloat(textVal) + parseFloat(numTotal);
            }
        });
        if (parseFloat(numTotal) > parseInt(dist)) {
            alert("Total not exceed by 100.");return false;
        }
    })
});