我已经为一个特定的设备添加了一个jQuery模态弹出窗口来保存上传文件。模态窗口弹出,取消按钮可以正常工作,但是我无法弄清楚如何让保存按钮触发onclick事件...
这是我所做的:
我不确定我错过了什么或做错了什么...这是我第一次使用JavaScript...任何帮助都将不胜感激!保存按钮没有任何反应...
编辑
感谢大家的帮助!我已更新按钮以删除内联样式:
我尝试使用您给我的以下内容:
但它们都会给我一个错误消息,内容如下:
当表单出现问题时,按钮显示为以下内容:
我收到一个“btnSave未定义”的错误...
这是我正在使用的脚本:
我找到了问题所在...我将对话框附加在了错误的位置。正确的做法应该是:
这是我所做的:
$(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"));
});
感谢大家的帮助!!!非常感激!