Javascript 自定义验证器:重复的错误消息
Javascript Custom Validator: duplicate error message
我有一个文件上传的自定义验证器来检查文件大小。验证工作正常,它会像预期的那样在验证摘要中显示错误消息,但它 还 将其显示在上传控件本身旁边。此外,即使上传控件有效,此错误消息也永远不会消失:
我不确定内联错误消息是如何到达那里的,或者如何摆脱它。这是我的控件:
<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);
}
如有任何见解,我们将不胜感激。
谢谢,
杰西
我仍然不确定是什么原因造成的,但我找到了一个奇怪的修复方法:
删除按钮调用函数clearFileInputField()
:
function clearFileInputField(tagId) {
document.getElementById(tagId).innerHTML =
document.getElementById(tagId).innerHTML;
}
看起来很奇怪,但它基本上用新的替换了 fileUpload
。我注意到,如果我在 之前 单击此按钮,我选择了一个文件,它会按预期工作。同样,我不确定为什么(如果有人知道,请分享),但我在 $document.ready()
语句中添加了对此函数的调用,问题就消失了。
将 Display="None"
添加到 CustomValidator
正确地 解决了问题。
我有一个文件上传的自定义验证器来检查文件大小。验证工作正常,它会像预期的那样在验证摘要中显示错误消息,但它 还 将其显示在上传控件本身旁边。此外,即使上传控件有效,此错误消息也永远不会消失:
<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);
}
如有任何见解,我们将不胜感激。
谢谢,
杰西
我仍然不确定是什么原因造成的,但我找到了一个奇怪的修复方法:
删除按钮调用函数clearFileInputField()
:
function clearFileInputField(tagId) {
document.getElementById(tagId).innerHTML =
document.getElementById(tagId).innerHTML;
}
看起来很奇怪,但它基本上用新的替换了 fileUpload
。我注意到,如果我在 之前 单击此按钮,我选择了一个文件,它会按预期工作。同样,我不确定为什么(如果有人知道,请分享),但我在 $document.ready()
语句中添加了对此函数的调用,问题就消失了。
将 Display="None"
添加到 CustomValidator
正确地 解决了问题。