D
David Whitney
Hi, all.
I'm trying to work with some client-side scripting issues with an
ASP.NET application. I realize I've probably done something wrong, but
at the moment it looks to me like an inconsistency in the way
javascript is interpreting form elements.
I generate my Javascript from a server-side control, and use the
UniqueID property of the control to generate what will be the final
client-side reference. Normally, this works fine; I've tried it on
code that enables/disables certain buttons, text boxes, etc. So,
puffed up by my own success, I then tried to apply the same technique
to a RadioButton. But when my JavaScript fires, I get a run-time error
indicating it doesn't recognize the identifier its being told to
access.
Here's a sample of the type of generated Javascript that *works*:
document.forms[0]["ContainerName:SubmitButton"].enabled=true;
But if I try to use this for a *radio button*, it fails:
if (document.forms[0]["ContainerName:RadioButtonName"].checked)
// do something
I'll get a client-side error that the value is null, which isn't true.
The ASP.NET code that generates this is something like the following:
protected override void Render(HtmlTextWriter w)
{
w.Write("if (document.forms[0][\"" + RadioButtonName.UniqueID +
"\"].checked)");
w.Write("// do something.");
}
In the debugger, if I replace "ContainerName:RadioButton" with
"ContainerName_RadioButton", (from the command window with a
debug.print statement) it *works* - just changing the colon to an
underscore. But the other syntax works everywhere else.
Am I missing something here, or is this just an inconsistency in the
way Javascript handles the radiobutton references/ID's?
Thanks,
David
I'm trying to work with some client-side scripting issues with an
ASP.NET application. I realize I've probably done something wrong, but
at the moment it looks to me like an inconsistency in the way
javascript is interpreting form elements.
I generate my Javascript from a server-side control, and use the
UniqueID property of the control to generate what will be the final
client-side reference. Normally, this works fine; I've tried it on
code that enables/disables certain buttons, text boxes, etc. So,
puffed up by my own success, I then tried to apply the same technique
to a RadioButton. But when my JavaScript fires, I get a run-time error
indicating it doesn't recognize the identifier its being told to
access.
Here's a sample of the type of generated Javascript that *works*:
document.forms[0]["ContainerName:SubmitButton"].enabled=true;
But if I try to use this for a *radio button*, it fails:
if (document.forms[0]["ContainerName:RadioButtonName"].checked)
// do something
I'll get a client-side error that the value is null, which isn't true.
The ASP.NET code that generates this is something like the following:
protected override void Render(HtmlTextWriter w)
{
w.Write("if (document.forms[0][\"" + RadioButtonName.UniqueID +
"\"].checked)");
w.Write("// do something.");
}
In the debugger, if I replace "ContainerName:RadioButton" with
"ContainerName_RadioButton", (from the command window with a
debug.print statement) it *works* - just changing the colon to an
underscore. But the other syntax works everywhere else.
Am I missing something here, or is this just an inconsistency in the
way Javascript handles the radiobutton references/ID's?
Thanks,
David