使用javascript 實現.net 驗證控制項功能

來源:互聯網
上載者:User
 

     在我們平時經常會遇到這樣的一個問題:當我們選擇checkbox時,希望驗證一個控制項,取消選擇,隱藏並取消驗證這個控制項。如果完全使用伺服器事件來實現此功能,肯定使用者體現不好,所以我們可以使用javascript 實現.net 驗證控制項功能。

首先我們看看.NET 中的驗證控制項,在頁面上做了什麼事情。

<asp:TextBox ID="txtValidator" runat="server"></asp:TextBox>

                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"

                    ControlToValidate="txtValidator" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>

在頁面上解析成:

  <input name="txtValidator" type="text" id="Text1" />

 <span id="Span1" style="color: Red; visibility: hidden;">RequiredFieldValidator</span>

驗證控制項在頁面變為了一個隱藏的span,需要驗證的時候,進行顯示。

同時頁面上出現了一些用於驗證的腳步

<script type="text/javascript">

//<![CDATA[

//驗證控制項的集合,當添加一個驗證控制項的時候,就會多一個item

var Page_Validators = new Array(document.getElementById("RequiredFieldValidator1"));

//]]>

</script>

 

<script type="text/javascript">

//<![CDATA[

var RequiredFieldValidator1 = document.all ? document.all["RequiredFieldValidator1"] : document.getElementById("RequiredFieldValidator1"); //找到驗證控制項

RequiredFieldValidator1.controltovalidate = "txtValidator";//綁定需要驗證的控制項

RequiredFieldValidator1.errormessage = "RequiredFieldValidator";//顯示未驗證通過的錯誤資訊

RequiredFieldValidator1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";//用於驗證的方法

RequiredFieldValidator1.initialvalue = "";

//]]>

</script>

 

 

<script type="text/javascript">

//<![CDATA[

 

var Page_ValidationActive = false;

if (typeof(ValidatorOnLoad) == "function") {

    ValidatorOnLoad();

}

 

function ValidatorOnSubmit() {

    if (Page_ValidationActive) {

        return ValidatorCommonOnSubmit();

    }

    else {

        return true;

    }

}

        //]]>

</script>

我們通過構造類似的指令碼進行控制項驗證

  1. 添加驗證span

<asp:CheckBox ID="cbSelect" runat="server" Text="選擇" onclick="ajusSelectValidator(this,'spantxtUserName')" />  

 <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>

                <span id="spantxtUserName" style="color: Red; display: none;">*該項不可為空</span>//添加span,用於顯示驗證資訊

  1. 添加指令碼

<script language="javascript" type="text/javascript">

    var IsSelectID = '<%=cbSelect.ClientID%>';

    var txtUserName = '<%=txtUserName.ClientID%>';

 

    function ajusSelectValidator (checkbox, validatorID) {

       ajustValidator(checkbox, validatorID, txtUserName);

         }

</script>

//Validator.Js

function ajustValidator(checkbox, validatorID, controltoHideID) {

 

    if (checkbox.checked) {

 

        register(validatorID, controltoHideID);

        document.getElementById(controltoHideID).style.visibility = "visible";

    }

    else {

        removeValidator(validatorID);

        document.getElementById(controltoHideID).style.visibility = "hidden";

    }

}

//添加驗證關聯

function register(validatorID, controltoValidateId) {

    Page_Validators.push(document.getElementById(validatorID));

    var span = document.getElementById(validatorID);

    spanTest.controltovalidate = controltoValidateId;

    span.errormessage = "*該項不可為空";

    span.display = "Dynamic";

    span.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";

    span.initialvalue = "";

 //   spanTest.style.visibility = "visible";

    ValidatorOnLoad();

}

 

//取消驗證關聯

function removeValidator(validatorID) {

    var validator = document.getElementById(validatorID);

    if (validator) {

        for (var i = 0; i < Page_Validators.length; i++) {

            if (Page_Validators[i] == validator) {

                Page_Validators.splice(i, 1);

                i--;

            }

        }

       validator.style.display = "none";

 

        ValidatorOnLoad();

    }

}

 PS: 如果頁面上沒有驗證控制項的話,直接執行上面的代碼會出錯的,因為Page_Validators 為null,直接往裡面push為拋異常。所以用的時候,要加一個驗證的控制項。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.