0

この質問への回答を読んで学んだことを取り入れた後、オートコンプリートフィールドで、利用可能な選択のいずれにも対応しないテキストをユーザーが入力したときに、エラー メッセージを生成する方法を見つけました。

このページは、ASP.NET バリデータのインフラストラクチャが既にある ASP.NET ページです。私がやりたいことは、ユーザーがリストにないものを入力したときにページの検証が失敗する原因となるバリデーターをページに導入することです。これが私がこれまでに持っているものです:

上記の質問に対する匿名の回答から始めました。

change: function (event, ui) {
        if (!ui.item) {
             $(this).val('');
         }
    }

autocomplete()私はそれを私のjavascriptでこれに置き換えました:

    change: function (event, ui) {
        if (!ui.item) {
             $(""#" + lblAutocompleteError.ClientID + @""").show();
             $(""#" + txtDummy.ClientID + @""").val('');
        } else {
             $(""#" + lblAutocompleteError.ClientID + @""").hide();
             $(""#" + txtDummy.ClientID + @""").val('Dummy');
        }
    },

フロント エンドではなくコード ビハインドで生成されるのは JavaScript です。

フロント エンドでは、2 つのコントロールを宣言しました。txtDummyこれらは、オートコンプリートに一致する文字列が含まれているかどうかに基づいて設定およびクリアし、入力rfvDummyする必要がありTextBoxます。

<asp:RequiredFieldValidator runat="server" ID="rfvDummy" 
    ControlToValidate="txtDummy" />
<asp:TextBox runat="server" ID="txtDummy" Text="Dummy" Visible="false" />

問題は、RequiredFieldValidator必要なときに失敗しないことです。さらに重要なことは、ここで間違った道を進んでいるという沈んだ気持ちになることです. hiddenTextBoxと aを作成するRequiredFieldValidatorことは、私が達成しようとしていることに対してあまりにも多くのハックのように思えます。ユーザーがオートコンプリート リストにない値を入力したときに、他のバリデータのようにフォーマットされたメッセージを使用して、クライアント側でページの検証を失敗させる簡単な方法はありますか?

4

1 に答える 1

0

私のオートコンプリートロジックは正しかった、それはtxtDummyそうではなかったコントロールを隠す手段でした。を使用して

Visible="false"

のHTMLtxtDummyは生成されないため、を確認する必要はRequiredFieldValidatorありません。のコードを次のように変更しますTextBox

<asp:TextBox runat="server" ID="txtDummy" Text="Dummy" style="display: none;" />

HTMLの生成を許可しました。上記の私のchange句が呼び出されると、一致するアイテムがで選択されていない場合、ページは検証に失敗するようになりましたTextBox

于 2013-01-09T22:47:51.577 に答える