1

Web ページには、3 つのドロップダウン コントロールと、必須フィールド バリデーターを含むいくつかのテキスト ボックスがあります。

値が指定されていないコントロールを強調表示したい。境界線の色または背景色を設定できます。

どうすればこれを達成できますか? ページ送信時にのみ必要です。

助けてください!

2 つのコントロールと 1 つの送信ボタンを持つ 2 行のコード サンプル

                        <tr>
                            <td bgcolor="#ffffff" width="500px">
                                &nbsp;
                                <asp:Label ID="lblcategory" runat="server" Text="Category of Incident" Width="250px"></asp:Label>
                                <asp:DropDownList ID="ddlincident" runat="server" Width="200px" ValidationGroup="validatePortal"
                                    CssClass="select">
                                </asp:DropDownList>
                            </td>
                            <td style="vertical-align: top; width: 10px">
                                <asp:Label ID="Label8" Text="*" ForeColor="Red" runat="server"></asp:Label>
                                <asp:RequiredFieldValidator ID="rfvddlincident" runat="server" ControlToValidate="ddlincident"
                                    ValidationGroup="validatePortal" Display="None" ForeColor="Red" InitialValue="0"
                                    SetFocusOnError="true"></asp:RequiredFieldValidator>
                            </td>
                            <td style="vertical-align: top">
                                <asp:Label ID="Label2" runat="server" CssClass="instructiontext"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td bgcolor="#ffffff" width="500px">
                                &nbsp;
                                <asp:Label ID="lblplace" runat="server" Text="Where Did the Incident Take Place"
                                    Width="250px"> </asp:Label>
                                <asp:TextBox ID="txtplace" MaxLength="50" runat="server" Width="200px" CssClass="textbox"></asp:TextBox>
                            </td>
                            <td style="vertical-align: top; width: 10px">
                                <asp:Label ID="Label9" Text="*" ForeColor="Red" runat="server" Style="vertical-align: top"></asp:Label>
                                <asp:RequiredFieldValidator ID="txttxtplace" runat="server" ControlToValidate="txtplace"
                                    ValidationGroup="validatePortal" Display="None" ForeColor="Red" SetFocusOnError="true"></asp:RequiredFieldValidator>
                            </td>
                            <td style="vertical-align: top">
                                <asp:Label ID="Label3" runat="server" CssClass="instructiontext"></asp:Label>
                            </td>
                        </tr>

                    <asp:Button ID="Button2" runat="server" Text="Next" ValidationGroup="validatePortal"
                        OnClick="next_clicked" CssClass="hoverbuttonblue" UseSubmitBehavior="false" />
4

4 に答える 4

3

WebFOrm_OnSubmitこれを行う方法は、ASP.NET 検証が機能するときに呼び出される関数をオーバーライドすることです。

これを行う

ステップ1:これをスタイルシートのどこかに追加します(エラーのあるテキストボックスの新しいスタイルルールを作成するには)

.errorMessage{border: 1px solid #f00; background-color: #0ff;}

ステップ 2: 以下のスクリプトを form タグの直後に配置します。(オーバーライドはここに来ます)

function WebForm_OnSubmit() {
    var retValue = true;
    if (ValidatorOnSubmit && !ValidatorOnSubmit()) {
        for (var i = 0; i < Page_Validators.length; i++) {
            var validator = Page_Validators[i];
            document.getElementById(validator.controltovalidate).className = validator.isvalid ? "" : "errorMessage";
            if (!validator.isvalid)
                retValue = false;
        }
    }
    return retValue;
}
于 2012-11-15T10:16:57.723 に答える
0

RequiredFieldValidator では、カスタム コードを追加できません。代わりにカスタム検証を使用する必要があります。カスタム検証の使用方法については、こちらのリンクを参照してください。
ドロップダウンリストのcustomvalidatorが呼び出されていない(明らかに)

于 2012-11-15T08:35:51.707 に答える
0

これを行うには 2 つの方法があります。

片道:

この機能を実現するには、コントロールを検証するためのカスタム Java スクリプト関数を記述する必要があります。検証が false の場合は、コントロールの背景色を変更します。それ以外の場合は、そのままにしておきます。

2 つの方法: 検証にカスタム バリデータを使用し、検証が false の場合はコントロールの背景色を変更します。ただし、これはクライアント側の検証に対するサーバー側の検証であるため、検証には Java スクリプト関数を使用する必要があります。

于 2012-11-15T08:40:40.900 に答える
0

asp net クライアント側検証の検証イベント

上のリンクを見てください。これが、クライアント側で検証をキャッチする方法です。それはjQueryを使用しています。ただし、通常の JS でも同じことができます。ハンドラーが実際にフォームにどのように割り当てられるかは、あなた次第です。上記でリンクした問題では、jQueryで行われます。ただし、純粋な JS を使用できます: https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener

var form = document.getElementById("our_form_id");
if (el.addEventListener) {
  form.addEventListener('submit', highlightFields, false); 
} else if (el.attachEvent)  {
  form.attachEvent('onsubmit', highlightFields);
}
function highlightFields() {
            if (typeof Page_Validators != 'undefined') {                
                for(var i = 0; i < Page_Validators.length; i++){
                    if (!Page_Validators[i].isvalid) {
                       document.getElementById(Page_Validators[i].controltovalidate).style.border = "solid 1px red";
                    }
                }

            }
        }

プロジェクトの 1 つに同様のコードがあり、正常に動作します。これは、クライアント側Page_Validators のすべてのコントロールのリストであり、それが属する要素の ID も含まれています。<asp:....ValidatorPage_Validators[i].controltovalidate

于 2012-11-15T09:00:02.373 に答える