ASP.NET - 具有动态ErrorMessage的自定义验证器

Joh*_*rad 3 javascript asp.net custom-validators

我目前正在尝试确保在文本框中输入的数字可以除以1.25或1.5.我决定天气将数字修改1.25或1.5的方式取决于另一个下拉列表中的内容.例如:如果DDL的选定索引为1,则I mod为1.5,如果为2 I mod为1.25.

但是,我需要向用户显示错误被抛出的原因.自定义验证器的错误消息需要类似"数字必须由1.25设计",反之亦然.

从我可以告诉我代码应该工作.但事实并非如此.我在另一个论坛上看到,获取源代码并使innerText成为错误信息应该可以解决问题.但我必须在某处做错事.当我单步执行我的javascript函数时,它会完美地逐步完成.只是没有错误消息.这是我的代码:

<asp:CustomValidator ID="ValidateFinHeight" runat="server" CssClass="NormLabel" 
Display="Dynamic" 
ControlToValidate="txtFinHeight" 
ClientValidationFunction="validateFinHeight"></asp:CustomValidator>

<script type="text/javascript" language="javascript" >
function validateFinHeight(source, arguments)
{
  var ddl = document.getElementById('cboTubeDia');
  var ddlSelIndex = ddl.selectedIndex

  switch(ddlSelIndex)
  {
    case 0:
        arguments.isValid = true;
        return;     
    case 1:
        if(arguments.value%1.25 != 0)
        {
            source.innerText = "Height must be divisibly by 1.25";
            arguments.isValid = false;
            return;
        }
        else
        {
            arguments.isValid = true;
            return;
        }
    case 2:
        if(arguments.value%1.5 != 0)
        {
            source.innerText = "Height must be divisibly by 1.5";
            arguments.isValid = false;
            return;
        }
        else 
        {
            arguments.isValid = true;
            return;
        } 
  }
}
</script>
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 5

根据区分大小写(fe IsValidValue),您的javascript函数中存在一些小错误.我已经调试它以查看我必须设置的Error-Span的属性.这是textContentFirefox和innerTextIE 的属性.

工作功能(支持跨浏览器):

  function validateFinHeight(source, args) {
        var ddl = document.getElementById('cboTubeDia');
        var ddlSelIndex = ddl.selectedIndex;
        var errorMsg = "";

        switch (ddlSelIndex) {
            case 0:
                args.IsValid = true;
                return;
            case 1:
                if (args.Value % 1.25 != 0) {
                    errorMsg = "Height must be divisibly by 1.25";
                    if (source.innerText) {
                        source.innerText = errorMsg;
                    } else {
                        source.textContent = errorMsg;
                    }
                    args.IsValid = false;
                    return;
                }
                else {
                    args.IsValid = true;
                    return;
                }
            case 2:
                if (args.Value % 1.5 != 0) {
                    errorMsg = "Height must be divisibly by 1.5";
                    if (source.innerText) {
                        source.innerText = errorMsg;
                    } else {
                        source.textContent = errorMsg;
                    }
                    args.IsValid = false;
                    return;
                }
                else {
                    args.IsValid = true;
                    return;
                }
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢你! (3认同)