2009-02-12 2 views
2

В SO есть похожие вопросы, но никто, кажется, не обращается к этому.jquery form plugin & programatic submit

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

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

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

(Обратите внимание, я попытался сделать легко этот код запускать ЦСИ-ки 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> 

ответ

0

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

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

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

+0

Действительно, это сработало для вас? Не имеет значения, когда я попробовал ваше предложение. Нажатие кнопки submit2 заставило перезагружать страницу, показывая только содержимое результата ajax (поле ввода уходит) –

0

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

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

делает

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

Это должно сделать то же самое, имея кнопку отправить щелкнул, если форма была ajaxified ,

+0

плагин jquery.form привязывает функциональность к событию щелчка кнопки отправки, поэтому отправка формы напрямую не работает –

1

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

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