我正在尝试使用jquery或jscript来点击隐藏按钮,我总是得到 “Microsoft JScript运行时错误:预期的对象”错误。
我已经尝试了以下所有方法(所有结果都相同):
$('#btnCompleteHidden').click();or:
$('#btnCompleteHidden').trigger('click');With plain JavaScript:
document.getElementById('btnCompleteHidden').onclick();
$('#<%=btnCompleteHidden.ClientID %>').click();Or:
document.getElementById('<%=btnCompleteHidden.ClientID %>').click();
我已经尝试使按钮可见并且结果仍然相同。
我将在这里发布aspx页面:
<script type="text/javascript">
function FileDownloader_DownloadStep(Step){
//The file list is going to be downloaded - "2 = About to Start"
if (Step == 2){
//Dynamically build the filelist for the downloader
getFileDownloader("FileDownloader").setFileList("GetFileList.aspx");
}
//The user has confirmed the download - "6 = File Download About to Start"
if (Step == 6){
//Perform the initialization updates to the first file only
var xmlhttp;
if (typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
if (!xmlhttp) {
throw "Browser doesn't support XMLHttpRequest.";
}
var data = "";
xmlhttp.open("POST", "UpdateVideoInitiated.aspx", true);
//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//xmlhttp.setRequestHeader("Content-length", data.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(data);
}
}
function onDownloadItemComplete(Result, ErrorPage, Url, FileName, ContentType, FileSize){
var xmlhttp;
var data;
//The handler will display the error description or updates as noted
switch (Result){
//Update the completed file as complete and then perform initialization updates to the next file only
case 1: if (typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
if (!xmlhttp) {
throw "Browser doesn't support XMLHttpRequest.";
}
data = FileName;
xmlhttp.open("POST", "UpdateVideoDownloaded.aspx?FileName=" + FileName + "&FileSize=" + FileSize, true);
//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//xmlhttp.setRequestHeader("Content-length", data.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(data);
break;
case 2: alert("An error has occurred while downloading the file " + FileName);
break;
//Update any skipped files to back off the initialization updates to the passed file only
case 3: if (typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
if (!xmlhttp) {
throw "Browser doesn't support XMLHttpRequest.";
}
data = FileName;
xmlhttp.open("POST", "UpdateVideoSkipped.aspx?FileName=" + FileName, true);
//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//xmlhttp.setRequestHeader("Content-length", data.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(data);
break;
case 4: alert("The server returned a wrong MIME type (should be " + ContentType + ") for the file " + FileName);
break;
case 5: alert("The server returned a wrong size (should be " + FileSize + ") for the file " + FileName);
break;
case 6: alert("An error has occurred while writing the file " + FileName + " to disk");
break;
case 7: alert("The file " + FileName + " could not be found on the " + "server");
break;
case 8: alert("Access to the file " + FileName + " denied");
break;
case 9: alert("Time out while downloading the file " + FileName);
break;
}
}
function onDownloadComplete(Result){
//The handler will display the error description
switch (Result){
//Update the member download statistics and rebind the grid
case 0: $('#btnCompleteHidden').click();
break;
case 1: alert("An error has occurred while creating the file list");
break;
case 2: alert("An error has occurred while downloading the file list");
break;
case 3: alert("The file list is empty");
break;
case 7: alert("The file list could not be found on the server");
break;
case 8: alert("Access to the file list denied");
break;
case 9: alert("Time out while downloading the file list");
break;
}
}
</script>
<div class="borderDiv">
<table cellspacing="0" class="borderTable0" width="100%">
<tr>
<td class="Subhdr" >
<asp:label id="lblScreenHeader" Cssclass="ScreenHdr" runat="server" Height="24px">Member Video Download Detail</asp:label>
</td>
</tr>
</table>
<div class="NinetyNine5PercentWide SolidThreePixelBorder" style="background-color:White">
<div class="OneHundredPercentWide EightPixelTopMargin TenPixelBottomMargin">
<div class="FileListHdr">
<span>Current Escrow Balance (Available for Future Use):</span>
<asp:label ID="lblAvailableBalance" Cssclass="FileListHdr" runat="server" >$280.00</asp:label>
<asp:label ID="lblAvailableBalanceMessage" Cssclass="FileListHdr" runat="server" ></asp:label>
</div>
</div>
<div class="NinetyNinePercentWide">
<div class="FileListHdr EightPixelBottomMargin">
<span class="FileListHdr" >Number of Files Selected for Download:</span>
<asp:label ID="lblTotalFiles" Cssclass="FileListHdr" runat="server" ></asp:label>
<span class="FileListHdr" >Total MBytes:</span>
<asp:label ID="lblTotalMBytes" Cssclass="FileListHdr" runat="server" ></asp:label>
<span class="FileListHdr" >Estmated Download Time:</span>
<asp:label ID="lblEstimatedTime" Cssclass="FileListHdr" runat="server" ></asp:label>
<asp:Button id="btnCompleteHidden" runat="server" Text="CH" Style="visibility: hidden"
Enabled="true" OnClick="btnCompleteHidden_OnClick"></asp:Button>
</div>
</div>
<div class="NinetyNinePercentWide">
<div class="OneHundredPercentWide">
<div class="DivDownload" >
<script type="text/javascript">
//Create JavaScript object that will embed File Downloader to the page
var fd = new FileDownloaderWriter("FileDownloader", 170, 28);
//For ActiveX control full path to CAB file (including file name) should be specified
fd.activeXControlCodeBase = "aurigma/FileDownloader2.cab";
fd.activeXControlVersion = "2,0,16,0";
//Set the Download button text
fd.addParam("ButtonDownloadText", "DOWNLOAD NOW");
//Set the Download button background color
//fd.addParam("BackgroundColor", "#E0EBFF");
fd.addParam("BackgroundColor", "White");
//Set the Download button regular image
fd.addParam("ButtonDownloadImageFormat", "width=170;height=28;BackgroundColor=White;" +
"urlNormal=App_Themes/Default/images/BtnDownload.jpg;" +
"urlHover=App_Themes/Default/images/BtnHover.jpg;" +
"urlPressed=App_Themes/Default/images/BtnPressed.jpg;" +
"urlDisabled=App_Themes/Default/images/BtnPressed.jpg");
//Set license key
fd.addParam("LicenseKey", "73020-10000-D8066-8CFDB-84249");
//Set reconnect attampts count
fd.addParam("ReconnectAttemptsCount", "360");
//Set reconnect timeout value (30000 = 10 seconds)
fd.addParam("ReconnectTimeOut", "10000");
//The following listener will perform some actions when the file list is about to be downloaded
fd.addEventListener("DownloadStep", "FileDownloader_DownloadStep");
//The following listener will perform some actions when download of a single file is finished
fd.addEventListener("DownloadItemComplete", "onDownloadItemComplete");
//The following listener will perform some actions when download process is complete
fd.addEventListener("DownloadComplete", "onDownloadComplete");
//The following listener will perform some actions when a general error is detected
//fd.addEventListener("Error", "onError");
//Add page load listener
//fd.fullPageLoadListenerName = "fullPageLoad";
//Set instructions property
fd.instructionsEnabled = true;
//Tell File Downloader writer object to generate all necessary HTML code to embed File Downloader into the page
fd.writeHtml();
</script>
</div>
<div class="FileListHdr">
<asp:RadioButtonList id="rblMemberMachine" runat="server" Font-Bold="True" BackColor="White" ToolTip="Please select machine for downloading"
CssClass="Radio FileListHdr" RepeatDirection="Horizontal" textAlign="right" BorderStyle="None"
AutoPostBack="True" OnSelectedIndexChanged="rblMemberMachine_SelectedIndexChanged" >
<asp:ListItem Text="Machine 1" Value="1" Selected="True"></asp:ListItem>
<asp:ListItem Text="Machine 2" Value="2"></asp:ListItem>
<asp:ListItem Text="Machine 3" Value="3"></asp:ListItem>
</asp:RadioButtonList>
</div>
</div>
</div>
</div>
<div class="OneHundredPercentWide" >
<asp:Panel ID="Panel1" runat="server" Width="100%" >
<asp:GridView id="grvSessionOrderDownloads" runat="server" BorderWidth="2px" BorderStyle="Solid" BorderColor="#C0C0FF"
Font-Names="Arial" Font-Bold="True" Font-Size="8pt" GridLines="Horizontal" AutoGenerateColumns="False"
HorizontalAlign="Left" ForeColor="Blue" CellPadding="2" AllowSorting="True" Width="100%"
OnRowDataBound="grvSessionOrderDownloads_OnRowDataBound" >
<HeaderStyle Font-Names="Arial" HorizontalAlign="Center" ForeColor="White" BackColor="#152EE5"
CssClass="sessionOrderDownloadHeaders" Font-Size="Medium" />
<RowStyle BackColor="White" ForeColor="#333333" />
<AlternatingRowStyle BackColor="#A5B0FF" />
<Columns>
<asp:BoundField Visible="False" DataField="SORD_ID" HeaderStyle-Width="0px" >
<HeaderStyle Width="0px" />
</asp:BoundField>
<asp:TemplateField HeaderStyle-Width="0px" >
<ItemTemplate>
<asp:CheckBox Visible="False" Enabled="false" ID="HiddenCheckBox" runat="server"
Checked='<%# Eval("SORD_SelectedForDownloadFlag") %>' />
</ItemTemplate>
<HeaderStyle Width="0px" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Select Files" HeaderStyle-ForeColor="White" >
<ItemTemplate >
<asp:ImageButton id="btnSelectVideo" runat="server" CommandArgument='<%# Eval("SORD_ID") %>'
CommandName="CheckUncheckVideo" ImageUrl='<%# GetCheckboxImage(Container.DataItem) %>'
Enabled='<%# Eval("SORD_EnableSelectionCheckBox") %>'
Visible='<%# Eval("SORD_EnableSelectionCheckBox") %>'/>
</ItemTemplate>
<HeaderStyle Width="4%" />
<ItemStyle VerticalAlign="Bottom" />
</asp:TemplateField>
<asp:BoundField DataField="SORD_OSTA_ID" ReadOnly="True" HeaderStyle-ForeColor="White"
HeaderText="Status">
<HeaderStyle Width="6%" />
<ItemStyle CssClass="sessionOrderDownloadItems" />
</asp:BoundField>
<asp:BoundField DataField="SORD_Topic" ReadOnly="True" HeaderStyle-ForeColor="White"
HeaderText="General <br /> Topic" HtmlEncode="false" >
<HeaderStyle Width="15%" />
<ItemStyle CssClass="sessionOrderDownloadItems" />
</asp:BoundField>
<asp:BoundField DataField="SORD_Session" ReadOnly="True" HeaderStyle-ForeColor="White"
HeaderText="Session <br /> YYMMDD" HtmlEncode="false" DataFormatString="{0:00-00-00}" >
<HeaderStyle Width="6%" />
<ItemStyle CssClass="sessionOrderDownloadItems" />
</asp:BoundField>
<asp:BoundField DataField="SORD_FileExtension" ReadOnly="True" HeaderStyle-ForeColor="White"
HeaderText="File <br /> Type" HtmlEncode="false" >
<HeaderStyle Width="5%" />
<ItemStyle CssClass="sessionOrderDownloadItems" />
</asp:BoundField>
<asp:BoundField DataField="SORD_SessionTitle" ReadOnly="True" HeaderStyle-ForeColor="White"
HeaderText="Presentation's Video-Title <br /> (or) Support-File Name" HtmlEncode="false" >
<HeaderStyle Width="29%" />
<ItemStyle CssClass="sessionOrderDownloadItems" />
</asp:BoundField>
<asp:BoundField DataField="SORD_VideoUnlockKey" ReadOnly="True" HeaderStyle-ForeColor="White"
HeaderText="File Unlock <br /> Password" HtmlEncode="false" >
<HeaderStyle Width="15%" />
<ItemStyle CssClass="sessionOrderDownloadItems" />
</asp:BoundField>
<asp:BoundField DataField="SORD_LastDownloadDate"
ReadOnly="True" HeaderStyle-ForeColor="White" HeaderText="Last <br /> Download" htmlEncode="False"
DataFormatString="{0:d}" >
<HeaderStyle Width="10%" />
<ItemStyle CssClass="sessionOrderDownloadItems" />
</asp:BoundField>
<asp:BoundField DataField="SORD_RemainingDownloads"
ReadOnly="True" HeaderStyle-ForeColor="White" HeaderText="Remaining <br /> Downloads" htmlEncode="False" DataFormatString="{0:##0}" >
<HeaderStyle Width="10%" />
<ItemStyle CssClass="sessionOrderDownloadItems" />
</asp:BoundField>
</Columns>
</asp:GridView>
</asp:Panel>
</div>
</div>
<br />
<asp:Label ID="Errormsg" runat="server" ForeColor="#CC0000"></asp:Label>
答案 0 :(得分:4)
几点想法:
您是否将jQuery脚本文件包含在此页面中?这可能会解释有关“$”变量的错误消息的问题。
使用click()而不是onclick()来触发点击事件。 onclick是在单击元素时触发的处理程序,但不用于启动事件本身。
由于ASP.NET命名空间及其确保客户端上的唯一元素ID的目标,元素的id可能不是您在页面中定义的内容。一个简单的方法就是在渲染页面上查看源代码并找到您的按钮及其“真实”ID。
正如本文评论中所提到的,jQuery脚本必须通过<script>
标签在页面中引用jQuery函数才能生效。
编辑:添加了第4点。
答案 1 :(得分:0)
我没有看到任何带有“Button”的ASP元素。不应该是这样的:
$('#<%=btnCompleteHidden.ClientID %>').click();
我在这一行看到了你的javascript代码:
switch (Result){
//Update the member download statistics and rebind the grid
case 0: $('#btnCompleteHidden').click();
这不起作用,因为您应该使用ClientID而不是服务器端ID。
switch (Result){
//Update the member download statistics and rebind the grid
case 0: $('#<%=btnCompleteHidden.ClientID %>').click();
这应该有效
答案 2 :(得分:0)
对我来说,问题出在页面中包含的外部javascript文件中。 在那个文件中,我调用了不存在的功能(注释掉了)。删除对未定义函数的调用后,问题得到解决
答案 3 :(得分:0)
如果您在较旧的IE浏览器上进行测试并且未清除缓存,则可能是您的页面未进行任何更改而呈现。
试试这个:
使用 Ctrl + Shift +清除浏览器的缓存 删除
- 刷新浏览器窗口 醇>
使用 Ctrl + F5
希望您的更改现在可以呈现,只要它在语法上是正确的。否则,我听说通常在开发时关闭缓存是个好主意。