Перебирайте поля формы с помощью JQuery, используя обработчик событий .submit () - PullRequest
0 голосов
/ 17 сентября 2009

У меня небольшая проблема с отправкой формы с помощью jquery. В прошлом я отправлял с ним много форм, но я просто думал, как я могу использовать обработчик событий .submit () для отправки формы и ее элементов без вызова идентификатора формы. Проблема в том, что я не могу связать элементы с помощью $ (this) (это возможно с помощью .children (), но я просто хочу использовать .each () через поля ввода).

Вот фрагмент кода:

$('.editTimeLink').click(function () {
    var id = $(this).attr('rel');
    $.get('<?php echo $config["httpRoot"]; ?>/ajax.php?ajax=1&sec=time&a=edit&id=' + id, {}, function (data) {
        if (data.returnCode == 1) {
            $('#timeBox_' + id).html(data.data);
            $('#timeBox_' + id + ' form').bind('submit', function () {
                //$(this).$(':input').each(function () {
                //$(this).(':input').each(function () {
                $(this).each(':input', function () {
                    alert("adsf");
                });

                return false;
            });
        } else if (data.returnCode == 0) {
            alert(data.data);
        }
    }, 'json');

    return false;
});

Как вы можете видеть, я пытаюсь предупредить строку «asdf» для каждого элемента ввода в форме «this».

Вы можете видеть, где закомментированы две строки, которыми я пытался управлять. Строка, которая не закомментирована, также не работает. Я знаю, как это исправить, например, передать имя селектора формы в функцию лямбда, но я просто думал, есть ли более «чистый» способ сделать это?

Спасибо заранее. Kristinn.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

.children () выбирает непосредственных потомков, поэтому, если у вас есть таблица или другая разметка в вашей форме, вы захотите использовать .find ()

$(this).find(':input').each(function(i){
    console.log($(this).val()); //$(this) now contains the current form field in the loop
});
1 голос
/ 17 сентября 2009

Почему вы не можете использовать children()? Вы все еще можете использовать each().

$(this).children(':input').each(...);

Однако это не работает:

$(this).each(':input', function () {
    alert("test");
});

Поскольку each() принимает только один аргумент, обратный вызов ( документ здесь ).

Кстати: использование отладчика JS, например, Firebug , - хорошая идея, чтобы выяснить, почему что-то не работает.

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