плагин jquery form и программная отправка - PullRequest
2 голосов
/ 12 февраля 2009

В SO есть похожие вопросы, но ни один из них, похоже, не решает эту проблему.

Ниже приведен очень упрощенный вариант моей ситуации. Сайт Drupal / PHP - у меня есть форма с кнопкой отправки, которую я использую плагин jquery.form для отправки ajax-ly. Это работает нормально, если я использую кнопку отправки (#submit).

Теперь я хочу программно запустить эту кнопку, используя другую кнопку (# submit2) за пределами формы. Я могу сделать это с помощью функции jquery click (), но возвращаемое содержимое не направляется к цели ajax, как я ожидал.

У меня нет большой свободы реорганизовать этот код, иначе я бы.

(Обратите внимание, что я попытался упростить запуск этого кода с помощью src-ing jquery и плагина формы с моего сайта.)

Идеи? Спасибо!

<?php
if ($_REQUEST['submit'] == 'Submit') {
    print 'ajax returns ... ' . $_REQUEST['text']; 
    exit; 
}
?>
<html>
<head>
    <script type="text/javascript" src="http://enjoy3d.com/scripts/jquery-1.2.6.js"></script>
    <script type="text/javascript" src="http://enjoy3d.com/scripts/jquery.form.js"></script>
    <script type="text/javascript">
        $(function() {
            $('#form').ajaxForm( { target: $('#span') } );
            $('#submit2').click( function() { $('#submit').click(); } );
        });
    </script>
</head>
<body>
    <span id='span'>target span</span>
    <form method='post' id='form'>
        <input type='text' name='text' size='50' />
        <input type='submit' id='submit' name='submit' value='Submit'/>
    </form>
    <input type='submit' id='submit2' name='submit2' value='Submit Too?' />
</body>
</html>

Ответы [ 3 ]

1 голос
/ 25 февраля 2009

Мне удалось решить ситуацию, похожую на вашу. Если единственная цель симуляции клика на submit1 - это отправить форму, вы можете попробовать:

$('#submit2').click(function() {
    $('#form').trigger('submit');
});
0 голосов
/ 12 февраля 2009

Вы пытались дать имя форме, а не

$('#submit2').click( function() { $('#submit').click(); } );

делает

$('#submit2').click( function() { document.myForm.submit(); } );

Это должно быть то же самое, что нажатие кнопки отправки, если форма была изменена.

0 голосов
/ 12 февраля 2009

Вам также может понадобиться return false сразу после нажатия кнопки отправки формы из кода события щелчка кнопки отправки без формы. Например:

<script type="text/javascript">
  $(function() {
    $('#form').ajaxForm({ target: $('#span') });
    $('#submit2').click(function() { $('#submit').click(); return false; });
  });
</script>

Это работает для меня. Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...