EDIT:
Некоторые люди предложили отправить submit непосредственно в форму. Это не то, чего я пытаюсь достичь. Я хочу, в частности, иметь возможность вызвать событие click() на input type='submit' и предоставить ему форму, как обычно. Диалог JQuery UI, похоже, мешает этому нормальному поведению. Пожалуйста, ознакомьтесь со ссылкой jsFiddle, которую я создал, поскольку проблема здесь снова креативна.
(Во-первых, я уже видел этот вопрос в StackOverflow, но ответ не работает в моей ситуации: jQuery UI Dialog с обратной почтой ASP.NET)
Желаемое поведение:
На моей странице у меня есть скрытое поле и кнопка отправки (которая скрыта через CSS).
Что я хочу сделать, так это использовать JavaScript, чтобы программно нажать эту кнопку, тем самым выставив форму. Самое главное.... Я хочу вызвать все это из диалогового окна JQuery UI. В принципе, пользователь будет делать выбор внутри диалогового окна JQuery UI, который заставит всю страницу быть отправленным и перезагруженным.
Заявление о проблемах
Запуск кнопки, как обычно, отлично работает, чтобы отправить форму. Однако он не работает, когда действие запускается из диалогового окна JQuery UI.
Как вы можете видеть в моем jsFiddle коде, я вызываю функцию jQuery click() на кнопку отправки... но форма фактически не отправляется! Кнопка действительно нажата на JavaScript, но "поведение представления формы" не происходит сама. Страница не размещена.
Я считаю, что диалоговое окно jQuery UI каким-то образом вмешивается в поведение представления формы кнопки, которую я пытаюсь программно щелкнуть.
Причина, по которой я хочу программным образом вызвать нажатие кнопки:
Я не могу, чтобы кнопки, расположенные внутри диалогового окна, сами отображали кнопки. В моем случае я создал повторно используемый элемент управления JavaScript, который обертывает диалоговое окно интерфейса jQuery. Этот JS-контроль позволяет пользователям выбирать сотрудника. Однако, когда сотрудник выбран, желаемое поведение не всегда будет: form submit. (Иногда мне может потребоваться отобразить выбранного сотрудника на странице и еще не выполнить отправку.)
Дополнительная информация:
Эта проблема не специфична для ASP.NET, но вот некоторые дополнительные детали, которые помогут объяснить, почему я все это пытаюсь. Я пишу приложение ASP.NET Web Forms с использованием .NET 4.5. Я начал использовать JavaScript все больше и больше для своих страниц, но на этой конкретной странице я хочу вызвать фактическую обратную передачу на сервер, чтобы я мог обработать событие нажатия кнопки из жизненного цикла страницы ASP.NET и заполнить GridView. Вот почему я хочу, чтобы иметь возможность использовать JavaScript, чтобы щелкнуть кнопку asp:, которая, в свою очередь, вызывает отправку формы.
И самое главное... Попробуйте сами --- > См. ссылку jsFiddle ниже.....
Опять же, эта проблема не специфична для ASP.NET. Я смог воссоздать ту же проблему здесь, на JsFiddle, используя обычный HTML и jQuery UI. Вот ссылка JsFiddle:
Как вы можете видеть в коде, я уже пытался использовать "исправление" перемещения диалогового окна JQuery UI внутри формы с помощью манипуляции JQuery DOM. Это не исправляет проблему.
Спасибо! Я ценю любую помощь!
HTML
<html>
<head></head>
<body>
<form action="http://www.google.com/index.html" method="post">
<input type="button" value="Open jQuery dialog" id="btnOpenDialog" />
<br /><br /><br />
The button below submits the form correctly if you click it.<br />
However, when I try to trigger click() event on this button <u>from within the jQuery UI Dialog above</u> then the form <b>fails to be submitted.
</b><br />
<input type="submit" value="Submit Form" id="btnSubmitForm" />
<input type="hidden" id="hdnEmployeeChosen" value="" />
</form>
<div id="divPopup" class="dialogClass" style="display: none;">
Picking an employee below <b>ought to</b> cause the form to submit, but sadly it does not...
<br /><br />
<div class="divOptions">
<input type="button" value="Pick" class="pickButton" employeeName="Weird Al" />
Weird Al Yankovic
</div>
<div class="divOptions">
<input type="button" value="Pick" class="pickButton" employeeName="Dracula" />
Count Dracula
</div>
<div class="divOptions">
<input type="button" value="Pick" class="pickButton" employeeName="David" />
David Copperfield
</div>
</div>
</body>
JavaScript
$(document).ready(function ()
{
var jqueryDialog = $('#divPopup')
.dialog({
autoOpen: false,
modal: true,
title: 'My Dialog',
width: 300,
height: 300,
draggable: false,
resizable: false
});
// This "fix" does not appear to help matters..........
jqueryDialog.parent().appendTo($("form:first"));
$('#btnOpenDialog').click(function () {
jqueryDialog.dialog('open');
});
$('.pickButton').click(function () {
// Put picked value into hidden field
var pickedEmployee = $(this).attr('employeeName');
$('#hdnEmployeeChosen').val(pickedEmployee);
// Try to cause a submit (ASP.NET postback in my case)
// THIS PART DOES NOT WORK.................
$('#btnSubmitForm').click();
//alert($('#hdnEmployeeChosen').val());
});
});
CSS
form {
margin: 5px;
border: 1px solid black;
background-color: #EEE;
padding: 15px 5px;
}
.dialogClass {
border: 1px solid black;
padding: 5px;
margin: 5px;
background-color: LightBlue;
font-size: 14px;
}
.pickButton {
margin-right: 5px;
}
.divOptions {
margin-bottom: 3px;
}