javascript - C# 小于 100 的数字字段总和(静态和动态)

标签 javascript c# listener ext.net

我有 3 个静态 numberfields,我正在 CodeBehind 中创建更多的 numberfields。我想要的是将所有 numberfields 的值的 sum 限制为 100。

这是静态的numberfields:

<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" />

下面是在代码隐藏中创建的动态 numberfields:

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();
} 

我尝试做的是使用隐藏字段#{sum100},并为动态字段创建一个 blur 事件的监听器:

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

并且在按钮的 clickBefore 事件中,我添加了以下代码:

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())}">

但是这种方法的问题是,当我第一次输入一些值时它起作用了,但是如果我尝试更新一个dynamic 字段,那么它将只使用更新后的 numberfieldstatic 没有其他 dynamic

发生这种情况是因为 blur 事件未在未更改的 dynamic numberfields 中触发

最佳答案

你可以把它放在“之前”点击上:

            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;
            }

关于javascript - C# 小于 100 的数字字段总和(静态和动态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50491656/

相关文章:

android - Android 中事件处理方法返回的 bool 值的含义是什么

grid - Rally Grid 加载事件未触发

javascript - 无法获取要在 js 测验结果中显示的链接

javascript - 变量未正确设置自身

c# - 将 ModelExpression 从 Tag Helper 传递到分部 View

c# - 来自 C# 的服务器名称指示

java - 自定义监听器未注册

javascript - 根据值动态更改 HTML 社区中的字段颜色

javascript - 使用 jQuery 选择 dom 元素不适用于此 id?

c# - 在 C# 中获取 SQL 执行 cmd 持续时间