【问题标题】:Validate AJAX Toolkit Combobox Regular Expression Validator验证 AJAX 工具包组合框正则表达式验证器
【发布时间】:2013-01-07 01:53:02
【问题描述】:

我想知道是否可以使用正则表达式验证器来验证 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>

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    总结:不要使用通常会触发回发的 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 页面上创建一个。这是必要的 因为没有它,站点将不会为 所需的按钮点击事件。
    2. 将链接按钮的 CSS 显示属性设置为“无”。请注意 链接按钮的“可见”属性可以设置为真(这是因为 asp.net 甚至不呈现带有 false 的控件的代码 可见属性)。为了说明,如果您的链接按钮的 cssClass 名称是 myButton,将其添加到您的 css 文件中:

      .myButton
      {
         display: none;
      }
      
    3. 现在按钮已创建并正确隐藏,您可以添加 回发函数到您的 javascript 函数。回发功能 有两个参数,第一个是客户端ID 我们创建的链接按钮控件。 注意客户端 asp.net 控件的 ID 与您分配给它的 ID 不同 在开发过程中。因此,我们使用 获取控件的客户端 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 %>','');
       };
    };
    

    目前我有很多分心的事情,而且有点杂乱无章,所以如果这些说明有点混乱,请原谅我。如果您需要更多帮助,请随时发表评论,我会尽快回来查看。

    【讨论】:

    • 感谢您的详细回复,但我首先想看看是否可以使用正则表达式验证器。不过还是谢谢。
    猜你喜欢
    • 2011-08-08
    • 1970-01-01
    • 2011-03-22
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多