1

リピーターにいくつかのフィールドがあり、それらを検証する必要があります。

シナリオは次のとおりです。 ページが読み込まれると、一連のフィールド(名、姓など)が一度だけ取得され、「別のユーザーを追加」というリンクが表示されます。リンクをクリックすると、同じフィールドが同じフィールドに再度追加されます。下。

コード部分について: 私の場合、リピーターを 4 回実行する必要がありました (したがって、フィールドは最初から 4 回ページに表示されます)。次に、それらを含む を非表示にすると、それらを非表示に<div>します。ボタンをクリックすると、最初の非表示の div などが表示されます。

一部のコード (すべてではない):

 <asp:Repeater ID="rptOtherPeople" runat="server">
 <HeaderTemplate>
      <table>
           <thead>
                <tr>
                     <td>
                          <h3>Други лица</h3>
                     </td>
                </tr>
           </thead>
           <tbody class="GridBody"> 
 </HeaderTemplate>
 <ItemTemplate>
      <tr class="GridRow" id="personRow" style="display: none">
           <td>
                <asp:TextBox ID="txtFirstName" CssClass="mid-inp" Text="" runat="server"></asp:TextBox>
           </td>
      </tr>
 </ItemTemplate>
 <FooterTemplate>
    </tbody>
    </table>
 </FooterTemplate>
 </asp:Repeater>

次の行を表示する JavaScript は次のとおりです。

$(document).ready(function () {
        var peopleNum = 1;

        if ($(".GridBody tr").length > 0) {
            var tr = $(".GridBody tr")[0];
            tr.style.display = 'table-row';
            tr.setAttribute('hidden', 'false');
            var anc = tr.getElementsByTagName('a');
        }

        if ($(".GridBody tr").length > 0 && peopleNum > 0) {
            for (i = 0; i < peopleNum; i++) {
                var tr = $(".GridBody tr")[i];
                tr.style.display = 'table-row';
                tr.setAttribute('hidden', 'false');
                if (i > 0) {
                    var anc = tr.getElementsByTagName('a');
                    if (anc[i] != undefined)
                        anc[i].style.display = 'none';
                }
            }
        }
    })

    function addPerson() {
        var body = $(".GridBody");
        var indexOfNextRow = $('tr[class="GridRow"][hidden="false"]').length;
        var tr = $(".GridBody tr")[indexOfNextRow];
        tr.style.display = 'table-row';
        tr.setAttribute('hidden', 'false');
    }

問題:たとえば、フィールドを必須にしたい。RequiredFieldValidator を配置し、場合によっては無効にし、他の場合には有効にします。問題は、ページに 4 つの RequiredFieldValidators を取得し、それらすべてを一度にオンまたはオフにすることしかできないことです。そのうちの 1 つだけを有効化したい。それらはほとんど同じであるため、それを行う方法を見つけることができませんでした。何か案は?

コードビハインドでこれを整理できないと思います。javascript を使用して RequiredFieldValidator を 1 つだけ操作できますか (必要なものを特定するにはどうすればよいですか)。jquery の検証を好む人もいます。この場合、どのように適用できますか(以前にjquery検証を使用したことがありません)?

編集1

コントロールは同じではありません。ブラウザで生成された ID は:ctl00_SPWebPartManager1_g_f6926ea5_98ba_46c1_b157_4f1ddc46885d_ctl00_Step21_otherPeople_rptOtherPeople_ctl01_rv1ですが、Javascript でここからバリデータにアクセスできません

4

2 に答える 2

0

サーバー側またはクライアント側のバリデーターを無効にすることができます。あなたの質問を理解した場合、探しているのは、必須フィールドバリデーターなどの特定の vaidator を無効にすることです。そのために、バリデーターを無効にする簡単な JavaScript コードを次に示します。

    function DisableRFValidators() {
        var ValidatorToDisable = document.getElementById("RequiredFieldValidator2");
        ValidatorEnable(ValidatorToDisable, false);
    }
于 2013-11-13T07:20:30.810 に答える