javascript - ASP.net C# 通过 javascript 启用和禁用必填字段验证器

标签 javascript c# asp.net file-upload requiredfieldvalidator

我在 asp.net C# 网页中使用输入类型"file"控件。情况是,当我尝试使用此文件上传控件浏览任何文件时,文本框变得可见,并且控制此文本框的所需字段验证器被启用。还有一个输入类型按钮,可将控件中的文件和文本框中的文本重置为空。我还想在单击重置按钮时禁用此必填字段验证器,但我无法这样做。

我可以使用 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 事件启用所需的验证器,但在重置按钮的单击事件上,验证器不会被禁用。

请帮忙。预先感谢您!

最佳答案

尝试

var valName = document.getElementById("<%=RequiredFieldValidatorTextBoxDownloadText.ClientID%>");
        ValidatorEnable(valName, true);

启用并

var valName = document.getElementById("<%=RequiredFieldValidatorTextBoxDownloadText.ClientID%>");
        ValidatorEnable(valName, false);

禁用

关于javascript - ASP.net C# 通过 javascript 启用和禁用必填字段验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30979980/

相关文章:

c# - 如何在 .NET Core 2.1 中使用 System.Security.Principal.WindowsIdentity

ASP.NET 4路由隐藏id参数

javascript - 为什么我不能在 JS 和 jQuery 中使用同一个变量?

javascript - 获取表中更改的特定元素

c# - 在 C# 中更改或添加列表的索引类型

c# - C# 的检查样式?

asp.net - 如何延长 session 超时时间?

asp.net - 如何使用 System.Drawing 绘制透明图像?

javascript - 收到错误 "Expected false to be true"

javascript - 如何在backbone.js中继承并添加child中的事件