Как получить идентификатор клиента asp.net в файле внешнего javascript
Когда я использую встроенные функции javascript, я могу получить идентификатор клиента из этого элемента с помощью этого кода:
document.getElementById('<%=buttonXXX.ClientID%>' )
Но теперь я использую внешний файл javascript для кэширования и более быстрого рендеринга
и этот код больше не работает для получения идентификаторов элементов клиента, он дает ошибку.
Как я могу получить идентификаторы элементов клиента в внешнем файле javascript, используя
asp.net 2.0, netframework 3.5, С#, iis 7.5
Ответы
Ответ 1
Я могу предложить два способа.
Первый способ
определите свои переменные перед вызовом javascript внутри файла .aspx, который можно скомпилировать.
var ButtonXXXID = <%=buttonXXX.ClientID%>
// and now include your javascript and use the variable ButtonXXXID
Второй способ
во внешнем файле javascript, напишите свой код как:
function oNameCls(ControlId1) {
this.ControlId1 = ControlId1;
this.DoYourWork1 = function() {
// use the control id.
// this.ControlId1
}
}
И назовите свои действия.
<script>
// init - create
var <%=this.ClientID%>MyCls = new oNameCls('<%=Control1.ClientID%>');
// do your work
<%=this.ClientID%>MyCls.DoYourWork1();
</script>
вызывая действие таким образом, вы предотвращаете перезаписывать одно действие из одного элемента управления с тем же действием из других элементов управления на той же странице.
Ответ 2
Вы можете использовать селектор классов. jquery может значительно упростить вашу жизнь здесь. Таким образом, вы можете применить к элементу специальный класс:
<asp:LinkButton ID="foo" CssClass="foo" runat="server" Text="foo" />
и в вашем внешнем файле javascript после готовности DOM вы можете ссылаться на кнопку с помощью селектора классов:
$(function() {
var fooButton = $('.foo');
});
Ответ 3
в script файле (test.js
)
function test(ControlID1) {
var controlId = document.getElementById(ControlID1);
controlId.onchange = function () {
alert(controlId.value);
}
}
в .aspx
файле
<script type="text/javascript">
var callTest = test('<%=txtSelected.ClientID%>');
window.onload = callTest;
</script>
Ответ 4
Я использую следующий код в моем файле .js
, когда у меня нет другого лучшего выбора.
$("[id$='buttonXXX'])
Ответ 5
Я знаю старый вопрос, но с jquery u можно использовать этот подход:
Файл Aspx
<asp:Button ID="btnCalculate" ClientID="btnCalculate" runat="server" />
внешний файл js
$("[ClientID='btnCalculate']").
https://lanitdev.wordpress.com/2009/06/08/extending-jquery-to-select-asp-controls/