Отсутствует диалог jQuery-UI <button>имя / значение в массиве POST - PullRequest
1 голос
/ 19 октября 2011

У меня есть диалоговое окно jQuery, которое отправляет форму при нажатии кнопки «Пожалуйста, подтвердите».

Я вижу свои данные поста, но у кнопки отсутствует ее имя / значение: enter image description here

Как мне заставить его отображать название / значение кнопки?
пример желаемого результата enter image description here

Вот пример кода testjQueryDialog.php, который демонстрирует это поведение:

<html><head>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    var $dialog = $('<div></div>')
        .dialog({
            autoOpen: false,
            title: 'Are you sure?',
            modal: true,
            closeOnEscape: true,
            buttons: {
                "Please confirm": function() {
                $( this ).dialog( "close" );
                $('#btnSubscription').parents('form').submit();
                },
                Cancel: function() {
                $( this ).dialog( "close" );
                }
            }
        });
    $('#btnSubscription').live('click', function() {
        $dialog.dialog('open');
        return false;
    });
});
</script>
</head><body>
<form action="/testjQueryDialog.php" method="post">
<div>
    <input name="txtOne" type="text" value="One">
  <input name="txtTwo" type="text" value="Two">
  <button name="btnSubmit" id="btnSubscription" value="Subscription">Click</button>
</div>
<?php echo 'POST<br>'; print_r($_POST); ?>
</form></body></html>

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Похоже, что диалоговое окно jQueryUI слегка отключено, поскольку оно не возвращает пары имя / значение кнопки.

Мой обходной путь - добавить скрытое поле в форму и использовать его для передачи значения кнопки(s).

$('#btnSubscription').live('click', function() {
    document.getElementById('hidSubmit').value = document.getElementById('btnSubscription').value
    $dialog.dialog('open');
    return false;
});

Теперь мой желаемый результат выглядит следующим образом: Array ([txtOne] => One [txtTwo] => Two [hidSubmit] => Subscription)

1 голос
/ 19 октября 2011

HTML4 spec гласит: «Если форма содержит более одной кнопки отправки, успешной будет только активированная кнопка отправки».

Похоже, что браузер игнорирует тот факт, что форма имеет только однукнопка отправки, и поскольку вы запускаете отправку формы динамически через $('#btnSubscription').parents('form').submit(), кнопка не считается успешным элементом управления.

Проблема заключается в кнопке click обратный вызов:

$('#btnSubscription').live('click', function() {
    $dialog.dialog('open');
    return false;
});

Активация кнопки теряется, когда false возвращается из обратного вызова, вам нужно вернуть значение на основе выбора пользователя: Возвращение значения из диалогового окна подтверждения с помощью диалогового окна JQuery UI

...