[英]Disable specific Validators inside a repeater via Javascript
我在中繼器中有一些字段,我需要對其進行驗證。
場景如下:當頁面加載時,我僅獲得了一組字段(名字,姓氏等),並且獲得了“添加其他用戶”鏈接,如果單擊該鏈接,它將再次在頁面上添加相同的字段。底部。
現在是代碼部分:在我的情況下,我需要運行轉發器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,並且一次只能打開或關閉所有它們。 我只想激活其中之一。 我找不到辦法,因為它們幾乎完全相同。 有任何想法嗎?
我假設我無法在后面的代碼中對此進行分類。 我可以通過javascript處理一個RequiredFieldValidator嗎(如何識別我想要的一個)。 有些人喜歡jquery驗證。 它在這種情況下適用嗎?如何使用(我以前從未使用過jquery驗證)?
編輯1
好的,控件並不相同。 在瀏覽器中,生成的ID為: ctl00_SPWebPartManager1_g_f6926ea5_98ba_46c1_b157_4f1ddc46885d_ctl00_Step21_otherPeople_rptOtherPeople_ctl01_rv1
,但是我無法從此處通過Javascript訪問驗證器
您可以在服務器端或客戶端禁用驗證器。如果我理解您的問題,那么您要查找的就是禁用特定驗證器,說必填字段驗證器。為此,這是一個簡單的JavaScript代碼來禁用驗證器。
function DisableRFValidators() {
var ValidatorToDisable = document.getElementById("RequiredFieldValidator2");
ValidatorEnable(ValidatorToDisable, false);
}
修復! 這是代碼:
$("#aspnetForm").validate();
$(".required").each(function (index) {
if ($(this).attr("id").indexOf("txtFirstName") >= 0) {
$(this).rules("add", {
required: true,
minlength: 3,
messages: {
required: "<div class='val' style='color:red'>Name is Required!</div>",
minlength: "<div class='val' style='color:red'>Minimum number of symbols = 3!</div>"
}
});
}
else if ($(this).attr("id").indexOf("txtFirstName") >= 0){
$(this).rules("add", {
required: false
});
}
});
function validateData() {
var result = $("#aspnetForm").valid();
return result;
}
function btnNextClick(btn_this) {
var btnNext = document.getElementById("<%=btnMoveNextHidden.ClientID%>");
if (btnNext != null && validateData() == true) {
btnNext.click();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.