验证AJAX Toolkit Combobox正则表达式验证器

时间:2013-01-07 01:53:02

标签: asp.net vb.net

我想知道是否可以使用正则表达式验证器验证ajax toolkit combobox。我允许用户输入值,但只希望允许某些值(regex [0-9]{0,1}[0-9]{1}|-7|-8|-9)。我可以使用自定义验证器,但我还需要创建javascript函数以在客户端验证。如果有更好的方式我会喜欢听到它。谢谢。这是组合框代码:

    <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>

1 个答案:

答案 0 :(得分: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甚至没有使用false呈现控件的代码 可见属性)。为了说明,如果你的链接按钮是cssClass name是myButton,将其添加到您的css文件中:

    .myButton
    {
       display: none;
    }
    
  3. 现在按钮已创建并正确隐藏,您可以添加 回传函数到你的javascript函数。回发功能 有两个参数,第一个是客户端ID 我们创建的链接按钮控件。客户端小心 asp.net控件的ID与您指定的ID不同 在开发期间。因此,我们使用&lt;%= Control.ClientId%&gt; 获取控件的客户端ID 。如果您的链接按钮ID是 “myLinkBut​​ton”,以下应该是你的回发函数:

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

    请注意,两个下划线字符 这个功能的开头。


  4. 这是一个正则表达式验证函数和应该由新按钮调用的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 %>','');
       };
    };
    

    我目前有很多分心,而且有点分散,所以请原谅我,如果这些指示有点令人困惑。如果您需要更多帮助,请随时发表评论,我会尽快回来查看。