我在asp.net C#网页中使用输入类型“文件”控件。方案是,当我尝试使用此文件上载控件浏览任何文件时,文本框变为可见,并且启用了控制此文本框的必需字段验证程序。还有一个输入类型按钮,用于将控件中的文件和文本框中的文本重置为null。我还想在重置按钮单击时禁用此必需的字段验证器,但我无法这样做。
我本可以使用aspx按钮控件来重置数据并禁用所需的字段验证器,但这会导致页面上丢失其他信息。这就是我尝试使用javascript进行此操作的原因。
我尝试使用来自互联网的代码。这是我的设计和代码:
<input ID="FileUploadDownload" type="file" name="file" runat="server" class="cssfileupload" />
<input type="button" value="Reset" id="btnClearAttachment" onclick="clearFileUploadDownload()" class="resetMe"/>
<asp:TextBox ID="TextBoxDownloadText" runat="server" placeholder="Type Download File Text" ontextchanged="TextBoxDownloadText_TextChanged" AutoPostBack="true"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidatorTextBoxDownloadText" ValidationGroup="A" ControlToValidate="TextBoxDownloadText" runat="server" CssClass="validator" ForeColor="Red" Display="Dynamic"></asp:RequiredFieldValidator>
fileupload控件的onchange事件如下:
<script type="text/javascript">
function checkFile(e) {
var file_list = e.target.files;
for (var i = 0, file; file = file_list[i]; i++) {
var sFileName = file.name;
var sFileExtension = sFileName.split('.')[sFileName.split('.').length - 1].toLowerCase();
var iFileSize = file.size;
var iConvert = (file.size / 10485760).toFixed(2);
if ((sFileExtension === "pdf" || sFileExtension === "png" || sFileExtension === "jpg" || sFileExtension === "gif"))
{
//...............Enable validator..................
var validatorObject = document.getElementById('<%=RequiredFieldValidatorTextBoxDownloadText.ClientID%>');
validatorObject.enabled = true;
validatorObject.isvalid = true;
ValidatorUpdateDisplay(validatorObject);
document.getElementById("TextBoxDownloadText").style.border = '1px solid red';
}
}
}
function clearFileUploadDownload() {
$("#FileUploadDownload").val("");
$('#<%=TextBoxDownloadText.ClientID%>').val("");
//...............disable validator..................
var validatorObject = document.getElementById('<%=RequiredFieldValidatorTextBoxDownloadText.ClientID%>');
validatorObject.enabled = false;
validatorObject.isvalid = false;
ValidatorUpdateDisplay(validatorObject);
document.getElementById("TextBoxDownloadText").style.border = '1px solid green';
}
</script>
在页面加载事件中,我已禁用所需的字段验证器:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
RequiredFieldValidatorTextBoxDownloadText.Enabled = false;
}
}
文件上传控制的Onchange事件启用了所需的验证器,但是在重置按钮的单击事件上,验证器未被移除。
请帮助。提前谢谢!
答案 0 :(得分:1)
尝试
var valName = document.getElementById("<%=RequiredFieldValidatorTextBoxDownloadText.ClientID%>");
ValidatorEnable(valName, true);
启用和
var valName = document.getElementById("<%=RequiredFieldValidatorTextBoxDownloadText.ClientID%>");
ValidatorEnable(valName, false);
禁用