2013-01-07 43 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