У меня есть кнопка asp: внутри диалогового окна jQuery
, для которого событие OnClick
не запускается. Я использую свойство PostBackUrl
, чтобы перейти на другую страницу, но я хочу, чтобы установил это свойство в событии OnClick
, чтобы я мог добавить переменную строки запроса в соответствии с именем файла, который они загружают в диалоговом окне. Ранее я задавал вопрос об этом диалоге, потому что я не мог заставить его полностью отправить сообщение, но это исправлено. Нажатие на кнопку возвращает сообщение в порядке, и я могу установить свойство PostBackUrl
в asp-разметке или в Page_Load()
кода позади. Но I не может получить функцию OnClick
по какой-либо причине, и вот где я хочу установитьPostBackUrl
. Вот .aspx ...asp: кнопка в диалоговом окне jQuery не запускается событие OnClick
<form id="frmDialog" runat="server">
<asp:Button ID="btnDisplayDialog" runat="server" Text="Click to Display Login Dialog" OnClientClick="showDialog(); return false;" />
<div class="divInnerForm"></div>
<div class="divDialog" style="display: none">
<table style="width: 100%;">
<tr>
<td>First Name: <asp:TextBox ID="txtFirstName" runat="server" Text=""></asp:TextBox></td>
<td>Last Name: <asp:TextBox ID="txtLastName" runat="server" Text=""></asp:TextBox></td>
</tr>
<tr>
<td>
How Old are You?
<asp:DropDownList ID="ddlAge" runat="server">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
<asp:ListItem Value="3">3</asp:ListItem>
</asp:DropDownList>
</td>
<td>
How Many Siblings do You Have?
<asp:DropDownList ID="ddlNumberSiblings" runat="server">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
<asp:ListItem Value="3">3</asp:ListItem>
<asp:ListItem Value="4">4</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td>
What is your birthday?
<input type="text" id="datepicker" name="datepicker" />
</td>
</tr>
<tr>
<td>
Please Choose a Picture to Upload:
<asp:FileUpload ID="fupUserPicture" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnUserPicture_Click" />
</td>
</tr>
</table>
</div>
</form>
... скрипт JQuery, который отображает диалоговое окно и помещает его в виде ...
function showDialog() {
$('.divDialog').dialog({
modal: true, show: 'slide', width: 500,
open: function (event, ui) {
$('.divInnerForm').append($(this).parent());
}
});
}
... и код позади с моей OnClick функция ....
protected void btnUserPicture_Click(object sender, EventArgs e)
{
string fileName = "";
if (fupUserPicture.HasFile)
{
try
{
fileName = Path.GetFileName(fupUserPicture.FileName);
fupUserPicture.SaveAs(Server.MapPath("~/Images/" + fileName));
}
catch (Exception ex)
{
}
btnSubmit.PostBackUrl = "~/Profile.aspx?pic=" + fileName;
}
}
EDIT: Хорошо, вот как кнопка отправки в диалоговом окне фактически отображается как HTML. Я думаю, что это может быть проблемой. Как вы можете видеть, javascript onclick просто предоставляет «Profile.aspx» в качестве обратного URL-адреса, хотя мне кажется, что любой код на стороне сервера должен выполняться в первую очередь. Это в форме ...
<input id="btnSubmit" type="submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("btnSubmit", "", false, "", "Profile.aspx", false, false))" value="Submit" name="btnSubmit">
..И вот как это renderes, если удалить btnSubmit.PostBackUrl = "~/Profile.aspx"
из функции Page_Load()
....
<input id="btnSubmit" type="submit" value="Submit" name="btnSubmit">
EDIT 2: ОК, так что я добавил еще одна скрытая кнопка asp вне диалога, а кнопка внутри диалогового окна теперь вызывает функцию javascript, которая вызывает событие скрытой кнопки OnClick
. То же самое, функция javascript работает нормально, но btnHidden_Click()
function does not run!
Я нахожусь в полной потере, на данный момент я буквально понятия не имею, почему это не работает. Вот новая скрытая кнопка, вне диалога DIV, но внутри формы, как вы можете увидеть ....
</div>
<asp:Button ID="btnHidden" runat="server" Text="" Visible="false" ClientIDMode="Predictable" OnClick="btnHidden_Click"/>
</form>
... вот кнопка в диалоге с событием OnClientClick, который, как я Said работает отлично ...
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="forcebtnHiddenClick(); return false;" />
а вот функция OnClick в коде для btnHidden, хотя это точно так же, как и раньше ...
protected void btnHidden_Click(object sender, EventArgs e)
{
string fileName = "";
if (fupUserPicture.HasFile)
{
try
{
fileName = Path.GetFileName(fupUserPicture.FileName);
fupUserPicture.SaveAs(Server.MapPath("~/Images/" + fileName));
}
catch (Exception ex)
{
}
Response.Redirect("~/Profile.aspx?pic=" + fileName);
}
}
... и яваскрипт функции, работает, но по какой-то причине не приводит к btnHidden_Click работает ...
function forcebtnHiddenClick(e) {
//__doPostBack('btnHidden', 'OnClick');
$('#btnHidden').trigger('click');
}
..as вы можете увидеть, я попытался как .trigger («щелчок») и __doPostBack(), как в нет.
EDIT: Хорошо, так что проблема, безусловно, функция
function forcebtnHiddenClick() {
__doPostBack('btnHidden', '');
}
, который на самом деле не вызывая btnHidden_Click
событие. Когда я делаю btnHidden
видимым и нажимаю его непосредственно, функция btnHidden_Click
работает нормально.
EDIT: После ТОНН поисков, нашел это и получил его на работу ...
function forcebtnHiddenClick() {
<%= ClientScript.GetPostBackEventReference(btnHidden, string.Empty) %>;
}
Я не знаю, почему
__doPostBack(<%= btnHidden.ClientID %>, '')
не работает.
Что такое инструкция $ ('. DivInnerForm'). Append ($ (this) .parent()); пытается chaeiev? попробуйте прокомментировать это. – pranag
Я не понимаю, когда вы говорите, что сообщение на кнопке отлично подходит, но onclick не срабатывает. В событии click будет генерироваться postback. Вы говорите, когда страница проходит через обратную передачу, обработчик события кнопки не когда вы наложили на него точку останова? –
@pranag без этого скрипта jQuery перемещает диалоговое окно вне формы, когда страница отображает – MassStrike