首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带参数的CustomValidator

带参数的CustomValidator
EN

Stack Overflow用户
提问于 2015-06-16 04:58:19
回答 1查看 2.2K关注 0票数 0

我正在验证一个带有CustomValidator和JavaScript的TextBox,给它传递一些参数:

<asp:CustomValidator ID="CustomValidator1" runat="server" SetFocusOnError="true" Display="Dynamic" ValidateEmptyText="true" ControlToValidate="tbFirstName" ClientValidationFunction="CVH.createFunction(notEmpty, 'tbFirstName','tbFirstNameRequired')"></asp:CustomValidator>

这是我的JavaScript

代码语言:javascript
复制
var CVH = {
    createFunction: function (validationFunction, extParamOne, extParamTwo) {
        var originalFunction = validationFunction;
        var extOne = extParamOne;
        var extTwo = extParamTwo;

        return function (src, args) {
            return originalFunction(src, args, extOne, extTwo);
        }
    }
}
var CustomValidatorHelper = CVH;

function notEmpty(source, args, tbID, spID)
{
    var textBoxId = document.getElementById(tbID);
    var spanID = document.getElementById(spID);

    if (textBoxId.Value == null || textBoxId.Value == "") {
        textBoxId.IsValid = false;
        textBoxId.className = "form-control redBorder"
        spanID.className = "redText";
        alert(textBoxId.getAttribute('value'));
    }
    else {
        textBoxId.IsValid = true;
        textBoxId.className = "form-control"
        spanID.className = "";
        alert(textBoxId.getAttribute('value'));
    }
}

因此,notEmpty被正确调用,并且它正在接收tbID和spID的值。

问题是,当我在TextBox中输入数据并执行代码时,我仍然得到not value。正如在textBoxId.Value中一样,即使框中有数据,它也是空的。

Texbox设置为Static:

<asp:TextBox ID="tbFirstName" runat="server" class="form-control" autocomplete="name" MaxLength="20" ClientIDMode="Static" />

它正在正确呈现:<input name="ctl00$MainContent$tbFirstName" type="text" maxlength="20" id="tbFirstName" class="form-control" autocomplete="name" />

对于为什么它不能读取TextBox中的数据,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-16 10:01:58

因此,错误在于尝试直接检查textbox的值,而不是使用args:

代码语言:javascript
复制
function notEmpty(source, args, tbID, spID)
{
    var textBoxId = document.getElementById(tbID);
    var spanID = document.getElementById(spID);

    if (args.Value == "")
    {
        args.IsValid = false;
        textBoxId.IsValid = false;
        textBoxId.className = "form-control redBorder"
        spanID.className = "redText";
    }
    else
    {
        args.IsValid = true;
        textBoxId.IsValid = true;
        textBoxId.className = "form-control"
        spanID.className = "";
    }
}

因此,除了为args.value更改textbox.value之外,代码仍然是相同的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30854873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档