我添加了一个jquery模式弹出窗口来保存特定设备的上传文件。弹出模式,取消按钮工作,但我无法弄清楚如何让保存按钮激活onclick事件......
这就是我所做的:
$(function () {
$("#dialogCustUploads").dialog("destroy");
$("#dialogCustUploads").dialog({
title: "Upload Files",
autoOpen: false,
modal: true,
resizable: false,
width: 'auto',
buttons: {
Save: function () {
$(document.getElementById('<%=btnSave.ClientID %>')).click();
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
function showCustUploads() {
$(function () {
$("#dialogCustUploads").dialog("open");
});
$(".dialogCustUploads").parent().appendTo($("form:first"));
}
<div id="dialogCustUploads" style="display: none">
<table style="width:100%;">
<tr>
<td class="auto-style1">
<asp:Label ID="Label16" runat="server" Text="Client"></asp:Label>
</td>
<td>
<asp:Label ID="lblClientUploadName" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label19" runat="server" Text="Certificate no" ></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCertificateNo" runat="server" Width="410px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label14" runat="server" Text="Upload Option"></asp:Label>
</td>
<td>
<asp:DropDownList ID="lstUploadOption" runat="server" AppendDataBoundItems="True" Width="410px"></asp:DropDownList>
</td>
</tr>
<tr>
<td class="auto-style1">
<asp:Label ID="Label18" runat="server" Text="File"></asp:Label>
</td>
<td>
<asp:FileUpload ID="fuPath" runat="server" Width="408px" />
<br />
<asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
</td>
</tr>
<tr>
<td class="auto-style1"></td>
<td>
<asp:Button ID="btnSave" style="display: none;" runat="server" Text="Save" OnClientClick="btnSave_Click" BackColor="White" />
</td>
</tr>
</table>
</div>
我不确定我错过了什么或做错了...这是我第一次使用javascript ...任何帮助都将不胜感激!!!!保存按钮什么也没做......
修改
感谢大家的帮助! 我更新了我的按钮以删除内联样式:
<asp:Button ID="btnSave" runat="server" Text="Save" OnClientClick="btnSave_Click" ClientIDMode="Static" />
我已尝试使用您提供给我的以下内容:
1. $("#<%=btnSave.ClientID%>").click();
2. document.getElementById('<%=btnSave.ClientID %>').click();
3. <asp:Button ID="btnSave" style="display: none;" runat="server" Text="Save" OnClientClick="btnSave_Click" ClientIDMode="Static" BackColor="White" />
document.getElementById('btnSave').click();
4. $('<%=btnSave.ClientID %>').trigger("click");
但他们都给我一条错误信息,上面写着:
Microsoft JScript runtime error: 'btnSave_Click' is undefined
当表单中断时,按钮显示如下:
<input type="submit" name="ctl00$MainContent$btnSave" value="Save" onclick="btnSave_Click;" id="btnSave" />
我在做什么还有什么不对吗?
修改
这是我的源代码:
<script type="text/javascript">
$(function () {
$("#dialog").dialog("destroy");
$("#dialog").dialog({
title: "Message",
autoOpen: false,
modal: true,
buttons: {
Ok: function () {
$(this).dialog("close");
}
}
});
});
function showMessage() {
$(function () {
$("#dialog").dialog("open");
});
return false;
}
$(function () {
$("#dialogCustUploads").dialog("destroy");
$("#dialogCustUploads").dialog({
title: "Upload Files",
autoOpen: false,
modal: true,
resizable: false,
width: 'auto',
buttons: {
Save: function () {
document.getElementById('<%=btnSave.ClientID %>').click();
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
function showCustUploads() {
$(function () {
$("#dialogCustUploads").dialog("open");
});
$(".dialogCustUploads").parent().appendTo($("form:first"));
}
</script>
我的div所在按钮点击事件:
<div id="dialogCustUploads" style="display: none">
<table style="width:100%;">
<tr>
<td class="auto-style1">
<asp:Label ID="Label16" runat="server" Text="Client"></asp:Label>
</td>
<td>
<asp:Label ID="lblClientUploadName" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label19" runat="server" Text="Certificate no" ></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCertificateNo" runat="server" Width="410px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label14" runat="server" Text="Upload Option"></asp:Label>
</td>
<td>
<asp:DropDownList ID="lstUploadOption" runat="server" AppendDataBoundItems="True" Width="410px"></asp:DropDownList>
</td>
</tr>
<tr>
<td class="auto-style1">
<asp:Label ID="Label18" runat="server" Text="File"></asp:Label>
</td>
<td>
<asp:FileUpload ID="fuPath" runat="server" Width="408px" />
<br />
<asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
</td>
</tr>
<tr>
<td class="auto-style1"></td>
<td>
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" />
</td>
</tr>
</table>
</div>
我通过gridview中的点击调用模态弹出窗口:
<asp:GridView ID="gvDeviceCalibration" runat="server" CellPadding="10" Width="90%" AutoGenerateColumns="False" BorderWidth="1px">
<HeaderStyle BackColor="#3A4F63" BorderWidth="1px" Font-Size="7pt" Wrap="False" ForeColor="White" />
<RowStyle BackColor="White" Wrap="True" />
<AlternatingRowStyle BackColor="#FFCC99" Wrap="True" />
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" ></asp:BoundField>
<asp:BoundField DataField="InstrumentType" HeaderText="Instrument Type" ReadOnly="True" SortExpression="InstrumentType"> <HeaderStyle Wrap="True" /></asp:BoundField>
<asp:BoundField DataField="Make" HeaderText="Make" ReadOnly="True" SortExpression="Make">
<HeaderStyle Wrap="True" />
</asp:BoundField>
<asp:BoundField DataField="Location" HeaderText="Location" ReadOnly="True" SortExpression="Location"></asp:BoundField>
<asp:BoundField DataField="SubLocation" HeaderText="Sub Location" ReadOnly="True" SortExpression="Sub Location"> <HeaderStyle Wrap="True" /></asp:BoundField>
<asp:BoundField DataField="CalibrationIntervals" HeaderText="Calibration Intervals" ReadOnly="True" SortExpression="CalibrationIntervals"> <HeaderStyle Wrap="True" /></asp:BoundField>
<asp:BoundField DataField="SerialNo" HeaderText="Serial No" ReadOnly="True" SortExpression="SerialNo"> <HeaderStyle Wrap="True" /></asp:BoundField>
<asp:BoundField DataField="WorkingRange" HeaderText="Working Range" ReadOnly="True" SortExpression="WorkingRange"> <HeaderStyle Wrap="True" /></asp:BoundField>
<asp:BoundField DataField="Classification" HeaderText="Classification" ReadOnly="True" SortExpression="Classification"></asp:BoundField>
<asp:BoundField DataField="CalibrationDate" HeaderText="Calibration Date" DataFormatString="{0:yyyy/MM/dd}" ReadOnly="True" SortExpression="CalibrationDate">
<HeaderStyle Wrap="True" />
</asp:BoundField>
<asp:BoundField DataField="CalibrationHouse" HeaderText="Calibration House" ReadOnly="True" SortExpression="CalibrationHouse"><HeaderStyle Wrap="True" /></asp:BoundField>
<asp:BoundField DataField="Owner1s" HeaderText="Owner 1" ReadOnly="True" SortExpression="Owner1s"></asp:BoundField>
<asp:BoundField DataField="Owners2" HeaderText="Owner 2" ReadOnly="True" SortExpression="Owners2"></asp:BoundField>
<asp:BoundField DataField="CreatedBy" HeaderText="Created By" ReadOnly="True" SortExpression="CreatedBy"></asp:BoundField>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:ImageButton ID="UpdateStatus" runat="server" Height="22" BorderStyle="None" BackColor="Transparent"
ImageUrl="~/Images/Sign-Select-icon.png" OnClick="SelectCalDevice_Click" Width="22" /><%-- --%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Upload">
<ItemTemplate>
<asp:ImageButton ID="CustUploadFiles" runat="server" Height="22" BorderStyle="None" BackColor="Transparent"
ImageUrl="~/Images/UploadFilesTrans.png" OnClick="SelectCustFiles_Click" Width="22" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="View ">
<ItemTemplate>
<asp:ImageButton ID="CustViewFiles" runat="server" Height="25" BorderStyle="None" BackColor="Transparent"
ImageUrl="~/Images/msgicon.png" ForeColor="Transparent" Width="25" OnClick="ViewCustFiles_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<HeaderTemplate>There are no leads listed.</HeaderTemplate>
</EmptyDataTemplate>
</asp:GridView>
这是我显示弹出窗口的SelectCustFiles_Click:
protected void SelectCustFiles_Click(object sender, EventArgs e)
{
ImageButton lb = sender as ImageButton;
GridViewRow row = (GridViewRow)lb.NamingContainer;
txtRowID.Text = row.Cells[0].Text;
lblClientUploadName.Text = row.Cells[1].Text;
PopulateUploadOptions();
//modalCustUploads.Show();
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "popUpMessage", "showCustUploads();", true);
}
这是我试图通过脚本调用的点击事件:
protected void btnSave_Click(object sender, EventArgs e)
{
// Before attempting to save the file, verify
// that the FileUpload control contains a file.
if (fuPath.HasFile)
{
// Get the size in bytes of the file to upload.
int fileSize = fuPath.PostedFile.ContentLength;
// Allow only files less than 2,100,000 bytes (approximately 2 MB) to be uploaded.
if (fileSize < 45497717)
{
// Call a helper method routine to save the file.
//SaveFile(fuPath.PostedFile);
SaveFile();
fuPath.Dispose();
lbljQMessage.Text = "Update successful";
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "popUpMessage", "showCustUploads();", true);
//modalCustUploads.Show();
}
else
lblMessage.Text = "You did not specify a file to upload.";
}
}
我收到错误'btnSave'未定义...
这是我正在使用的脚本:
<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="../Scripts/jquery-ui-1.8.17.custom.min.js" type="text/javascript"></script>
解决
我发现了问题...我将对话框添加到了错误的地方..而不是这个:
function showCustUploads() {
$(function () {
$("#dialogCustUploads").dialog("open");
});
$(".dialogCustUploads").parent().appendTo($("form:first"));
}
它应该是:
function showCustUploads() {
$(function () {
$("#dialogCustUploads").dialog("open");
});
}
而不是这个:
$(function () {
$("#dialogCustUploads").dialog("destroy");
$("#dialogCustUploads").dialog({
title: "Upload Files",
autoOpen: false,
modal: true,
resizable: false,
width: 'auto',
buttons: {
Save: function () {
// __doPostBack("<%=btnSave.UniqueID %>", "");
$($get("<%=btnSave.UniqueID %>")).click();
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
它应该是:
$(function () {
$("#dialogCustUploads").dialog("destroy");
var dlgUploads = $("#dialogCustUploads").dialog({
title: "Upload Files",
autoOpen: false,
modal: true,
resizable: false,
width: 'auto',
buttons: {
Save: function () {
// __doPostBack("<%=btnSave.UniqueID %>", "");
$($get("<%=btnSave.UniqueID %>")).click();
},
Cancel: function () {
$(this).dialog("close");
}
}
});
dlgUploads.parent().appendTo(jQuery("form:first"));
});
感谢大家的帮助!!!欣赏它!
答案 0 :(得分:6)
document.getElementById('<%=btnSave.ClientID %>').click();
Or
$('#<%=btnSave.ClientID %>').click();
答案 1 :(得分:3)
你做错了:
$(document.getElementById('<%=btnSave.ClientID %>')).click();
你混淆和混淆jquery和javascript选择器,你应该用jquery这样做:
$('#<%=btnSave.ClientID %>').click();
或者像本机javascript一样:
document.getElementById('<%=btnSave.ClientID %>').click();
注意:您可以将ClientIDMode
设置为Static
,然后您也可以这样做:
<asp:Button ID="btnSave" style="display: none;" runat="server" Text="Save" OnClientClick="btnSave_Click" ClientIDMode="Static" BackColor="White" />
并在jquery中:
$('#btnSave').click();
或javascript:
document.getElementById('btnSave').click();
答案 2 :(得分:3)
$('#<%=btnSave.ClientID %>').trigger("click"); // Make sure you use '#' as part of your jQuery selector
如果$('<%=btnSave.ClientID %>')
指的是该按钮,您可以通过检查$('<%=btnSave.ClientID %>').length == 1
进行检查。
答案 3 :(得分:3)
尝试使用
$(&#34;#&LT;%= btnSave.ClientID%GT;&#34)。单击();
并删除按钮的内嵌样式。
答案 4 :(得分:2)
IT应该
document.getElementById('<%=btnSave.ClientID %>').click();
代替
$(document.getElementById('<%=btnSave.ClientID %>')).click();
因为您正在使用javascript, BTW jQuery是javascript ,但在$()
内包装将创建jQuery对象,您将两者结合起来。
答案 5 :(得分:2)
OnClientClick
指定要执行的客户端javascript函数,但看起来您正在尝试使用它来执行服务器端方法。 OnClick
将执行服务器端方法:
OnClick="btnSave_Click"
答案 6 :(得分:1)
试试这个
$('<%=btnSave.ClientID %>').click();
答案 7 :(得分:1)
尝试使用
$("#btnSave").click();
答案 8 :(得分:1)
如果您想要实现以下目标:
当用户点击GridView(gvDeviceCalibration)中的上传图片按钮时,用户会显示一个jquery模式(或弹出窗口)。
如果用户点击“取消”,则不执行任何操作,否则,如果用户单击“保存”按钮,则转到事件处理程序后面的代码&#39; btnSave_Click&#39;
可能的解决方案(更改&#39; gvDeviceCalibration&#39; GridView中的&#39;上传&#39;模板字段):
<asp:TemplateField HeaderText="Upload">
<ItemTemplate>
<asp:ImageButton ID="CustUploadFiles" runat="server" Height="22" BorderStyle="None" BackColor="Transparent" ImageUrl="~/Images/UploadFilesTrans.png" OnClick="btnSave_Click" Width="22" OnClientClick="return confirm('Are you sure you want to Save?')" />
</ItemTemplate>
</asp:TemplateField>
在上面的代码中,我们正在使用“图像”按钮通过“OnClientClik”进行确认。事件并通过&#39; OnClick&#39;执行保存方法调用后的代码。事件
在这种情况下,您无需使用&#39; SelectCustFiles_Click&#39;方法或&#39; jquery模态。
如有任何问题,请告诉我