簡體   English   中英

CustomFieldValidator ClientValidationFunction不觸發,沒有錯誤

[英]CustomFieldValidator ClientValidationFunction not firing and no error

我添加了CustomValidator ClientValidationFunction來驗證我的Web應用程序中的文本字段,但是,此驗證功能根本不會觸發。 這是我的驗證功能:

function isValidYear(sender,args)
        {
            alert('Me here');
            var year = document.getElementById('MainContent_frmArticle_Source_txtYear').value;
            var currentdate = new Date();
            var regex = new RegExp("^\d{4}$");
            if (year > 1 && year <= currentdate.getFullYear() && regex.test(year)) {
                alert('IsValid');
                args.IsValid = true;
            }
            else
            {
                alert('Is Not Valid');
                args.IsValid = false;
            }

//我添加了這些警報只是為了測試函數是否被觸發,但是它們從未顯示。

這是我的自定義驗證程序代碼:

<asp:TextBox ID="txtYear" runat="server" widtth="20%"></asp:TextBox>
<asp:CustomValidator runat="server" ID="CustomValidateYear" ClientValidationFunction="isValidYear" ControlToValidate="txtYear" ErrorMessage="Please enter a valid year" Display="Static" ForeColor="Red" ></asp:CustomValidator>

更多信息:
我正在使用Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.6.114.0,在添加驗證器后的第一次運行中,我遇到了“不打擾的驗證”錯誤,因此我按照網站上的步驟操作(我不記得它是哪個)將軟件包安裝到我的網站上項目:

<package id="AspNet.ScriptManager.jQuery" version="2.1.4" targetFramework="net45" />
  <package id="jQuery" version="2.1.4" targetFramework="net45" />
  <package id="Microsoft.AspNet.ScriptManager.MSAjax" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.ScriptManager.WebForms" version="5.0.0" targetFramework="net45" />

請注意,我不希望將SO的大多數帖子都提到的不打擾的驗證設置為None。

您發布的代碼有效,只有我注意到您在js函數中遺漏了右括號}是isValidYear,並檢查是否將其放在<script type="text/javascript"></script>這樣看起來像

<script type="text/javascript">

    function isValidYear(sender, args) {
        alert('Me here');
        var year = document.getElementById('MainContent_frmArticle_Source_txtYear').value;
        var currentdate = new Date();
        var regex = new RegExp("^\d{4}$");
        if (year > 1 && year <= currentdate.getFullYear() && regex.test(year)) {
            alert('IsValid');
            args.IsValid = true;
        }
        else {
            alert('Is Not Valid');
            args.IsValid = false;
        }
    }
</script>

另外請注意,CustomValidator不會在空文本上觸發,您需要添加RequiredFieldValidator

順便說一句,您只需替換您的document.getElementById('MainContent_frmArticle_Source_txtYear').value

args.Value

暫無
暫無

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

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