我需要了解如何通过jquery获取对象asp的访问权限,因为我有一个文件,它在我的aspx后面的代码的页面加载中注册,脚本需要进行验证,我在不同的读取我可以使用此<%=txtName.UniqueID %>
执行此操作的网站但不起作用我将放置我的代码,任何人都可以帮助我。感谢
在脚本文件中触发验证此方法的按钮
<asp:Button ID="btnOk" CssClass="btnOk" runat="server" Text="Ok" />
js
$(".btnOk").click(validateData);
function validateData() {
$("form").validate({
rules:
{
'<%=txtName.UniqueID %>': "required"
}
});
}
我的代码背后我注册了脚本
ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript", "<script language=javascript src='js/SetIndicators.js'> </script>");
ClientScript.RegisterClientScriptBlock(this.GetType(), "Validator", "<script language=javascript src='js/jquery.validate.js'> </script>");
更新
这是我需要验证的文本输入
<asp:TextBox ID="txtLayerName" CssClass="txtLayerName" runat="server"> </asp:TextBox>
使用'<%=txtName.UniqueID %>'
和<%=txtName.UniqueID %>
也无法使用'.txtLayerName'
更新2
这是asp
的渲染名称<input name="ctl00$ContentPlaceHolder1$txtLayerName" type="text" id="ctl00_ContentPlaceHolder1_txtLayerName" class="txtLayerName required" />
答案 0 :(得分:2)
我想你想要:
'<%= txtLayerName.ClientID %>': "required"
另外,请记住,您可以使用CSS类而不是像这样定义规则,这样更容易一些。 E.g:
<asp:TextBox ID="txtLayerName" CssClass="txtLayerName required" runat="server" />
答案 1 :(得分:1)
我使用jQuery的"ends with" selector运气好,因为控件的服务器端ID始终是客户端ID字符串的最后一位。
例如,您的按钮的客户端ID可能类似于“ctl00 $ foo $ bar $ btnOk” 然后你的jQuery将是:
$("[id$=btnOk]").click(validateData);
然后你可以用TextBox做同样的事情。
rules:
{
$("[id$=txtLayerName]").attr("id") : "required"
}
更新:
试试这个:
rules = {};
rules[$("[id$=txtLayerName]").attr("id")] = "required";
由于对象本质上只是对元素具有直接命名访问权限的数组,因此您可以创建一个数组并将其用作对象。
答案 2 :(得分:1)
jquery使用html输入的NAME属性验证,而不是ID。我使用webforms已经有一段时间了,所以我不知道名字和id是否匹配。但它可能值得研究。
编辑:我已经添加了验证,并取得了巨大的成功:
$(function(){
$("form").validate();
$('.txtLayerName').each(function () {
//add the required validator to these!
$(this).rules('add', {required: true});
});
});
答案 3 :(得分:0)
这确实有用,因为我正在使用它,但我猜我'<%=txtName.UniqueID %>'
不需要''
来工作......
如果您使用的是.NET 4且拥有clientIDMode = Static
,您还可以使用以下脚本,并像往常一样使用这些名称。
$("#aspForm input:not(:hidden)").each(function () {
var i = $(this).get(0);
i.name = i.id;
});