У меня есть страница ASP.NET, и я пытаюсь быстро сопоставить элементы управления проверкой, которые привязаны к определенному текстовому полю (ввод текста) с помощью селектора jQuery. Элементы управления проверкой отображаются в виде span, а свойство controltovalidate - в качестве свойства expando. Вот тестовый пример:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<asp:Button ID="Button1" runat="server" Text="Button" /></div>
<input type="button" value="Test" onclick="ml_test();" />
<script type="text/javascript">
ml_test = function() {
alert($('[controltovalidate=TextBox1]').get().length);
};
</script>
</form>
</body>
</html>
Отображается как:
(code removed here)
<input name="TextBox1" type="text" id="TextBox1" />
<span id="RequiredFieldValidator1" style="color:Red;visibility:hidden;">RequiredFieldValidator</span>
<span id="RegularExpressionValidator1"></span>
<input type="submit" name="Button1" value="Button" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))" id="Button1" /></div>
<input type="button" value="Test" onclick="ml_test();" />
<script type="text/javascript">
ml_test = function() {
alert($('[controltovalidate=TextBox1]').get().length);
};
</script>
(code removed here)
<script type="text/javascript">
//<![CDATA[
var RequiredFieldValidator1 = document.all ? document.all["RequiredFieldValidator1"] : document.getElementById("RequiredFieldValidator1");
RequiredFieldValidator1.controltovalidate = "TextBox1";
RequiredFieldValidator1.errormessage = "RequiredFieldValidator";
RequiredFieldValidator1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
RequiredFieldValidator1.initialvalue = "";
//]]>
</script>
Проблема: функция ml_test () показывает 1 в Internet Explorer 7 (как и ожидалось), но показывает 0 в Firefox 3.6.8. Я попытался добавить дополнительные элементы управления, но в Firefox он постоянно не работает.
Я обнаружил этот пост , который показывает использование амперсанда в селекторе, подобном этому [@expando=value]
, но когда я пробую этот синтаксис, jQuery 1.4.2 выдает ошибку.
Существует ли кросс-браузерный способ выбора атрибутов expando, и если да, то какой правильный синтаксис?