簡體   English   中英

ASP.net C#通過javascript啟用和禁用所需的字段驗證器

[英]ASP.net C# enabling and disabling required field validator through javascript

我在asp.net C#網頁中使用輸入類型“文件”控件。 情況是,當我嘗試使用此文件上載控件瀏覽任何文件時,將顯示一個文本框,並且啟用了控制該文本框的必需字段驗證器。 還有一個輸入類型按鈕,用於將控件中的文件和文本框中的文本重置為空。 我還想在單擊“重置”按鈕時禁用此必填字段驗證器,但是我無法這樣做。

我本可以使用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>

文件上傳控件的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);

禁用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM