Получить идентификатор и / или имя отправленной формы с помощью jQuery .submit () - PullRequest
3 голосов
/ 01 сентября 2011

Я загрузил несколько форм, используя .load () для разных DIV.Загруженный файл выглядит как в следующем примере.

<div id="block_id-299">
  <div id="content">
    <form name="form1" method="post">
      <input type="submit" name="field1" value="Submit">
    </form>
  </div>
</div>

А сейчас я пытаюсь получить имя отправленной формы, а затем ее значения, используя .serialize().Я использовал $('form').submit(function(){ ... }, но так как я загружаю форму динамически, это больше не работает.

Любая помощь?

PS: событие может быть перехвачено с помощью $(document).submit(function(){, но какполучить имя и / или идентификатор формы?

Ответы [ 4 ]

10 голосов
/ 01 сентября 2011

Вы можете сделать это с $ (). Делегат:

$(document).delegate('form', 'submit', function(event) {
    var $form = $(this);
    var id = $form.attr('id');
    var data = $form.serialize();
    // ...
});

Это работает даже для форм, добавленных после того, как вы вызвали делегат ().

Это работает путем прослушивания submit событий, всплывающих до document, и путем проверки того, происходит ли чет из элемента form.

Это похоже на $('form').live('click', ...), но изначально не выполняет селектор.

См. .delegate() и .live() документацию.

1 голос
/ 26 июля 2013

Чтобы получить атрибуты формы при отправке формы, мы также можем использовать функцию submit . Например:

$("form").submit(function(){
  var form = $(this);
  var id = form.attr('id');
  alert(id + ' form submitted');
});
0 голосов
/ 29 марта 2013

Следующий код предупредит идентификатор формы кнопки, имеющей «create_btn» css, вы также можете получить к ней доступ по идентификатору, если хотите, изменив точку (.create-btn) на hash (# create-btn), и вы можете используйте вместо этого .click или .submit.

  <script type="text/javascript">
  $(document).ready(function () {

    $('.create-btn').click(function(){
      alert(this.form.id);

       }) ;

  });
0 голосов
/ 01 сентября 2011

Вы можете использовать jQuery live обработчик событий, который работает и для динамически создаваемых элементов. Попробуйте это

$('form').live('submit', function(event) {
    var $form = $(this);
    var formName = $form.attr('name');
    var formData = $form.serialize();
    // ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...