代码之家  ›  专栏  ›  技术社区  ›  aggicd

C数字字段总和(静态和动态)小于100

  •  1
  • aggicd  · 技术社区  · 6 年前

    我有3个静电 numberfields 我正在创造一些 数字字段 更多内容 CodeBehind . 我想要的是限制 sum 所有的价值观 数字字段 到100。

    这是静电的 数字字段 :

    <ext:NumberField ID="numS1" runat="server" MinValue="0" MaxValue="100" FieldLabel="numS1" />                                                
    <ext:NumberField ID="numS2" runat="server" MinValue="0" MaxValue="100" FieldLabel="numS2" />                                          
    <ext:NumberField ID="numS3" runat="server" MinValue="0" MaxValue="100" FieldLabel="numS3" />
    

    这里是动态的 数字字段 在代码隐藏中创建:

    foreach (var v in visits)
    {
        NumberField nf = new NumberField();
        nf.ID = v.VISID + "num";
        nf.MaxValue = 100;
        nf.MinValue = 0;
        nf.FieldLabel = v.VISID;
        PerVisitFS.Items.Add(nf);
        nf.Render();
    } 
    

    我试着用 hidden 领域 #{sum100} 对于 dynamic 字段创建 listener blur 事件:

    nf.Listeners.Blur.Handler = "#{sum100}.setValue(Number(this.getValue()) + Number(#{sum100}.getValue()));";
    

    Before 事件 click 我添加了一个按钮的代码:

    Before="#{sum100}.setValue(Number(#{sum100}.getValue()) + Number(#{numS1}.getValue()) + Number(#{numS2}.getValue()) + Number(#{nums#}.getValue())); 
    if ( #{sum100}.getValue() > 100)
    { alert('sum is > 100 : ' + #{sum100}.getValue()); 
         #{sum100}.setValue(0); 
         return false;
    }
    else
    {alert('sum is : ' + #{sum100}.getValue())}">
    

    但是这种方法的问题是,当我第一次输入一些值时,它会起作用,但是如果我尝试更新 动态 字段,然后它将仅使用更新的 numberfield 以及 static 一个没有另一个 动态 那些。

    这是因为 模糊 未更改中未触发事件 动态 数字字段

    1 回复  |  直到 6 年前
        1
  •  1
  •   Fabio Barros    6 年前

    你可以把它放在“之前”的点击上,这样做:

                var numOfNumFields = 3; //increase as necessary, it could came from a hidden field 
    
                var sum = 0;
                for ( var i = 0; i< numOfNumFields;i++){
    
                   sum += Ext.getCmp('numS'+i).getValue();
                }
                if (sum > 100)
                { 
                    alert('sum is > 100 : ' + sum); 
                    return false
                }
                else
                {
                    alert('sum is : ' + sum);
                    return true;
                }