-1

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

1 に答える 1

0

概要: 通常はポストバックをトリガーする asp.net ボタンを使用する代わりに、html を使用してボタンを作成します。最初に正規表現の検証をチェックする JavaScript 関数を html ボタンで実行し、次に (有効な場合) ポストバック関数を実行します。

まず、サーバー側のコードをトリガーするために使用する asp.net ボタンを削除し、クライアント側のボタンに置​​き換えます。このボタンの作成にサポートが必要な場合は、私の別の回答の手順に従うことができます。リンクは次のとおりです。

https://stackoverflow.com/questions/14062993/input-type-image-onclick-will-trigger-its-event-but-not-act-well-on-funct/14063911#14063911-スタック オーバーフロー

次に、javascript 関数は最初に正規表現関数を使用してデータを検証する必要があります。次のようなものを使用します。

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

***注: 正規表現は私にとって苦手分野なので、このスクリプトを少し修正する必要があるかもしれません。

3 番目に、上記のスクリプトを使用して入力が検証された場合は、javascript を使用してポストバックを呼び出します。これを行うには、次の手順を実行します。

  1. ASP ページに を作成します。これがないと、必要なボタンクリック イベントのイベント ハンドラーがサイトで生成されないため、これが必要です。
  2. リンクボタンの css 表示プロパティを「なし」に設定します。リンク ボタンの "Visible" 属性が true に設定される可能性があることに注意してください (これは、asp.net が false の visible 属性を持つコントロールのコードをレンダリングすることさえしないためです)。たとえば、リンク ボタンの cssClass 名が myButton の場合、これを css ファイルに追加します。

    .myButton
    {
       display: none;
    }
    
  3. ボタンが作成され、適切に非表示になったので、JavaScript 関数にポストバック関数を追加できます。ポストバック関数には 2 つのパラメーターがあります。最初のパラメーターは、作成したリンク ボタン コントロールのクライアント側 IDです。asp.net コントロールのクライアント側 ID は、開発中に割り当てる ID とは異なることに注意してください。このため、 <%=Control.ClientId %> を使用してコントロールのクライアント IDを取得します。リンク ボタン ID が「myLinkBut​​ton」の場合、ポストバック関数は次のようになります。

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

    この関数の先頭に2 つのアンダースコア文字があることに注意してください。


以下は、新しいボタンによって呼び出される正規表現検証関数と 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 %>','');
   };
};

私は今、気を散らすことがたくさんあり、少し頭がおかしくなっているので、これらの指示が少し混乱している場合はご容赦ください. さらにサポートが必要な場合は、お気軽にコメントしてください。すぐに確認します。

于 2013-01-07T04:45:28.747 に答える