我有一个复杂的页面,但我创建了一个简单的ASP.NET页面。我有一个Telerik RadAsyncUpload控件和一个UpdatePanel内的按钮,如下所示:
<asp:UpdatePanel ID="_updatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
...
<telerik:RadAsyncUpload ID="fileUpload" runat="server" MaxFileInputsCount="1" OnClientFilesSelected="fileUpload_ClientFilesSelected" /><br />
<asp:Button ID="_saveNewFileButton" runat="server" OnClick="_saveNewFileButton_Click"
Text="Save"/>
</ContentTemplate>
</asp:UpdatePanel>
当选择文件时,我想禁用_saveNewFileButton并将文本更改为&#34;请等待附件上传...&#34;但我似乎无法抓住javascript中的按钮引用:
var FilesUpdateInterval = null;
//Handles client side FilesSelected event for _newFileUploadButton.
function fileUpload_ClientFilesSelected(sender, args) {
//disable the click event for submit button during upload
var submitButton = $find('<%= _saveNewFileButton.ClientID %>');
submitButton.set_text('Please Wait for Attachment Upload...')
submitButton.set_readOnly(true);
if (FilesUpdateInterval == null) {
FilesUpdateInterval = setInterval(function () { FileCheckForUploadCompletion(); }, 500);
}
}
我收到submitButton是null错误。我尝试将此javascript代码放在updatepanel之外,并在ContentTemplate内部使用相同的结果。显然,无论我做什么都是错的。如何在javascript中获取updatepanel中的控件?
编辑:我发现$ find仅适用于telerik控件。所以,我必须使用document.getElementById函数或者像Steve指定的那样使用JQuery。另外,我必须使用RegisterClientScriptBlock。我将用史蒂夫的建议进行测试,然后接受答案。答案 0 :(得分:1)
在ASP.Net中使用jQuery和vb,我已经做了类似的事情,虽然它不是那么漂亮但效果很好。我所拥有的[Whatever]是一个并不总是拥有控件的FormView。此外,我没有使用按钮,但我认为这是更改按钮文本的语法。不管怎样,它可能会给你一些想法:
$('#<%=GetButtonClientID("_saveNewFileButton")%>').attr('value', 'Please Wait for Attachment Upload...');
然后我有这样的功能:
Public Function GetButtonClientID(ByVal argFieldName As String) As String
Dim tmpID As String = "0"
Dim tmpButton As Button = [Whatever].FindControl(argFieldName)
If Not tmpButton Is Nothing Then Return tmpButton.ClientID.ToString Else Return "0"
End Function
答案 1 :(得分:1)
简短版本 - 使用$ get()或document.getElementById(),因为常规HTML元素不是IScriptControls,所以$ find()不会给你任何东西,而且他们没有富客户端API你正在尝试使用。
例如
var submitButton = $get('<%= _saveNewFileButton.ClientID %>');
submitButton.setAttribute("value", "Please Wait for Attachment Upload...");
选项2 - 使用RadButton。