【问题标题】:Javascript Custom Validator: duplicate error messageJavascript 自定义验证器:重复的错误消息
【发布时间】:2015-04-05 19:39:15
【问题描述】:

我有一个用于检查文件大小的文件上传的自定义验证器。验证工作正常,它会在验证摘要中按预期显示错误消息,但它将其显示在上传控件本身旁边。此外,即使上传控件有效,此错误消息也永远不会消失:

我不确定内联错误消息是如何到达那里的,或者如何摆脱它。这是我的控制:

<div class="tblCell" id="celUpl6">
<asp:FileUpload ID="uplCollection6" runat="server" ClientIDMode="Static" CssClass="formfield" />
<a onclick="clearFileInputField('celUpl6')" href="javascript:noAction();" class=" linkButton">REMOVE</a>
<asp:CustomValidator ID="cvUpl6" runat="server"
    ErrorMessage="- Too big!"
    ControlToValidate="uplCollection6"
    Display="Static"
    ClientValidationFunction="validateFileSize6" ValidationGroup="vgRegForm"></asp:CustomValidator>

这是我的验证函数:

<script type="text/javascript">
function WebForm_OnSubmit() {
    if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) {
        for (var i in Page_Validators) {
            try {
                var control = document.getElementById(Page_Validators[i].controltovalidate);
                if (!Page_Validators[i].isvalid) {
                    control.className = " validator-controls-error";
                } else {
                    control.className = "formfield";
                }
            } catch (e) { }
        }
        return false;
    }
    return true;
}

function getFileSize(uploaderName) {
if (window.ActiveXObject) {
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var filepath = document.getElementById(uploaderName).value;
    var thefile = fso.getFile(filepath);
    var sizeinbytes = thefile.size;
} else {
    var sizeinbytes = document.getElementById(uploaderName).files[0].size;
}

return sizeinbytes;

}

function validateFileSize6(source, arguments) {
arguments.IsValid = (getFileSize("uplCollection6") <= sizeLimit);

}

任何见解将不胜感激。

谢谢,

杰西

【问题讨论】:

    标签: javascript validation file-upload


    【解决方案1】:

    我仍然不确定是什么原因造成的,但我找到了一个奇怪的解决方法:

    移除按钮调用函数clearFileInputField()

    function clearFileInputField(tagId) {
        document.getElementById(tagId).innerHTML =
                    document.getElementById(tagId).innerHTML;
    }
    

    看起来很奇怪,但它基本上用一个新的替换了fileUpload。我注意到,如果我在选择文件之前单击此按钮,它会按预期工作。同样,我不知道为什么(如果有人知道,请分享),但我在$document.ready() 语句中添加了对该函数的调用,问题就消失了。

    【讨论】:

      【解决方案2】:

      Display="None" 添加到CustomValidator 可以解决问题正确

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-12
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        • 2013-06-05
        • 2016-04-18
        • 2016-12-04
        • 1970-01-01
        相关资源
        最近更新 更多