When I use embedded javascript functions I can get client id of elements with this code:
document.getElementById(\'<%=buttonXXX
I know old question but with jquery u can use this approache:
Aspx file
<asp:Button ID="btnCalculate" ClientID="btnCalculate" runat="server" />
external js file
$("[ClientID='btnCalculate']").
https://lanitdev.wordpress.com/2009/06/08/extending-jquery-to-select-asp-controls/
I can suggest 2 ways.
define your variables before call the javascript, inside the .aspx file that can be compiled.
var ButtonXXXID = <%=buttonXXX.ClientID%>
// and now include your javascript and use the variable ButtonXXXID
in the external javascript file, write your code as:
function oNameCls(ControlId1) {
this.ControlId1 = ControlId1;
this.DoYourWork1 = function() {
// use the control id.
// this.ControlId1
}
}
And call your actions like.
<script>
// init - create
var <%=this.ClientID%>MyCls = new oNameCls('<%=Control1.ClientID%>');
// do your work
<%=this.ClientID%>MyCls.DoYourWork1();
</script>
calling the action this way you prevent overwrite one action from one control with the same action from other controls on the same page.
in script file (test.js
)
function test(ControlID1) {
var controlId = document.getElementById(ControlID1);
controlId.onchange = function () {
alert(controlId.value);
}
}
in .aspx
file
<script type="text/javascript">
var callTest = test('<%=txtSelected.ClientID%>');
window.onload = callTest;
</script>
I use the following code in my .js
file, when I have no other better choice.
$("[id$='buttonXXX'])
You could use a class selector. jquery might greatly simplify your life here. So you could apply a special class to the control:
<asp:LinkButton ID="foo" CssClass="foo" runat="server" Text="foo" />
and in your external javascript file once the DOM is ready you could reference the button using a class selector:
$(function() {
var fooButton = $('.foo');
});