我在转发器中有一些字段,我需要验证它们。
以下是该方案: 当页面加载时,我只获得一组字段(名字,姓氏等),我得到一个链接“添加另一个用户”,如果单击该链接,它会在底部再次添加相同的字段。
现在代码部分:
在我的情况下,我需要运行转发器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中访问验证器
答案 0 :(得分:0)
你可以在服务器端或客户端禁用验证器。如果我理解你的问题,你要找的是禁用特定的vaidator说必需的字段验证器。这是一个简单的javascript代码来禁用验证器。< / p>
function DisableRFValidators() {
var ValidatorToDisable = document.getElementById("RequiredFieldValidator2");
ValidatorEnable(ValidatorToDisable, false);
}
答案 1 :(得分:0)
修正了它!以下是代码:
$("#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();
}
}