2013-01-07 41 views
0

我想知道是否可以使用正則表達式驗證器驗證ajax toolkit combobox。我允許用戶輸入值,但只允許某些值(regex [0-9]{0,1}[0-9]{1}|-7|-8|-9)被允許。我可以使用自定義驗證器,但我也需要創建JavaScript函數以在客戶端進行驗證。如果有更好的方法,我很樂意聽到它。謝謝。這裏是組合框代碼:驗證AJAX工具包Combobox正則表達式驗證器

<asp:ComboBox CssClass="required" DropDownStyle="Simple" 
    ID="DaysDeployed" Width="50" runat="server"> 
     <asp:ListItem Selected="True" Text="" Value="" /> 
     <asp:ListItem Text="Refused" Value="-7" /> 
     <asp:ListItem Text="Don't Know" Value="-8" /> 
     <asp:ListItem Text="Missing Data" Value="-9" /> 
    </asp:ComboBox> 

回答

0

摘要:而不是使用通常會觸發回發的asp.net按鈕,請使用html製作一個。讓html按鈕運行一個首先檢查正則表達式驗證的javascript函數,然後(如果有效)運行回發函數。

第一個,我將刪除用於觸發服務器端代碼的asp.net按鈕,並將其替換爲客戶端按鈕。如果您需要幫助創建此按鈕,您可以按照我的另一個答案中的步驟操作。這裏是鏈接:

https://stackoverflow.com/questions/14062993/input-type-image-onclick-will-trigger-its-event-but-not-act-well-on-funct/14063911#14063911-Stack Overflow

,JavaScript函數應該使用正則表達式函數首先驗證數據。使用這樣的事情:

function validateCombobox(myComboboxValue) { 
    if(myComboboxValue.match(regularExpressionString)===null){ 
     return false 
    } else { 
     return true 
    }; 
}; 

***注:正則表達式是一個薄弱領域對我來說,你可能需要修改這個腳本一點。

第三,如果輸入使用上面的腳本驗證,然後使用javascript調用回發。要這樣做,請按照下列步驟操作:

  1. 在asp頁面上創建一個。這是必要的 ,因爲沒有它,該網站將不會生成事件處理程序 所需的buttonclick事件。
  2. 將鏈接按鈕的CSS顯示屬性設置爲'none'。請注意, 鏈接按鈕的「可見」屬性被設置爲true(這是因爲 asp.net甚至不會爲控件提供虛假的 可見屬性)。爲了說明這一點,如果你的鏈接按鈕的的CssClass 名字爲myButton,將它添加到你的CSS文件:

    .myButton 
    { 
        display: none; 
    } 
    
  3. 現在,創建按鈕和正確隱藏,你可以添加 回傳功能,以您的javascript函數。回發功能 有兩個參數,第一個是我們創建的 鏈接按鈕控件的客戶端ID當心客戶端的 asp.net控件的ID不同於您在開發過程中爲其分配 的ID。因此,我們使用<%= Control.ClientId%> 來獲取控件的客戶端ID。如果您的鏈接按鈕ID是 「myLinkBut​​ton」,下面應該是回傳功能:

    __doPostBack('<%=myLinkButton.clientid %>','') 
    

    請注意,有強調在 開始該功能的字符。


這裏是正則表達式驗證功能的示例和JavaScript函數,應該由你的新按鈕調用:

function validateCombobox(myComboboxValue) { 
    if(myComboboxValue.match(regularExpressionString)===null){ 
     return false 
    } else { 
     return true 
    }; 
}; 


function comboBoxButton_click(){ 
    var myComboboxValue = $('#<%=myComboBox.clientid %>').val(); 
    if(validateCombobox(myComboboxValue)==true){ 
     __doPostBack('<%=myLinkButton.clientid %>',''); 
    }; 
}; 

我目前所面對的很多雜念和我如果這些說明有點混亂,請原諒我。如果您需要更多幫助,請隨時發表評論,我會盡快回復。

+0

我很欣賞詳細的答覆,但我首先看看是否可以使用regularexpression驗證程序。不過謝謝。 – Wade73