因此,此自定义验证程序使用jQuery根据文本框为空的验证将标签变为红色。我遇到的问题与验证组有关。
function ButtonClick(session, args, textBoxId, labelId) {
$(document).ready
(
function () {
var is_valid = $("#" + textBoxId).val() != "";
$("#" + labelId).css("color", is_valid ? "#686868" : "red");
args.IsValid = is_valid;
}
);
}
这里我将传递给函数的标签变为红色。我需要传递验证组以及此验证器对应的。我不确定如何在切换验证组时将其他标签变回灰色。现在我有2个按钮和两个标签/文本框对。每个都在他们自己的验证组。当我点击按钮1时,一切都很完美。 Label1变红了。当我然后单击按钮2时,label2变为红色。标签1不会变回灰色。我需要它变成灰色。我需要一个适用于多个验证组的通用解决方案。
我不确定如何通过jQuery访问验证组。
由于
<div class="formLabel">
<asp:Label ID="lblClientId" runat="server" CssClass="text" meta:resourcekey="lblClientIdResource" />
</div>
<div class="formValue">
<asp:TextBox ID="tbClientId" runat="server" CssClass="text" meta:resourcekey="tbClientIdResource" />
<asp:CustomValidator ID="rfvClientId" runat="server" ValidationGroup="ClientId" meta:resourcekey="rfvClientIdResource" ControlToValidate="tbClientId" ClientValidationFunction="BtnClickClientId" style="position:absolute;" ValidateEmptyText="True" ><asp:Image ID="Image2" ImageUrl="caution_20.png" runat="server" /></asp:CustomValidator>
</div>
<script src="../../Scripts/Test.js" type="text/javascript"></script>
<script type="text/javascript">
function BtnClickClientId(session, args) {
ButtonClick(session, args, "<%= tbClientId.ClientID %>", "<%= lblClientId.ClientID %>");
}
function BtnClickLastName(session, args) {
ButtonClick(session, args, "<%= tbSearchLastName.ClientID %>", "<%= lblSearchLastName.ClientID %>");
}
</script>
答案 0 :(得分:0)
如何将javascript函数绑定到首先执行的按钮并重置页面上所有文本框的颜色?如果页面上有其他您不想影响的文本框,您可以按类定位它们,例如文本:
function ResetValidationStates()
{
$(".text").each( function() { $(this).css("color", "#686868"); } );
}
此外,为什么不在CSS文件中创建类,然后使用jQuery .addClass(className)
和.removeClass(className)
方法设置所需的类,而不是在代码中设置内联颜色。你的文本框?这样,如果您改变网站的外观,就不会发现自己正在通过Javascript进行更改。
答案 1 :(得分:0)
我不熟悉ASP标记,但我确信<asp:Label>
生成HTML <label>
标签。所以在这种情况下我可以建议如下:
function ButtonClick(session, args, textBoxId, labelId) {
$(document).ready (
function () {
// $(".formLabel label").css("color", "#686868");
// this one will work independently from ASP generated tags
$(".formLabel").css("color", "#686868");
var is_valid = $("#" + textBoxId).val() != "";
$("#" + labelId).css("color", is_valid ? "#686868" : "red");
args.IsValid = is_valid;
}
);
}
首先,您为所有标签设置默认的“#686868”颜色,然后进行验证。