Всегда получать значения из первой формы. В чем дело? - PullRequest
2 голосов
/ 10 мая 2011

У меня есть веб-страница, где есть несколько форм. Похоже this.

При нажатии кнопки «Создать» ajax-скрипт проверяет поля на наличие недопустимых значений в первой форме, которой принадлежит кнопка «Создать». Это нормально.

Но когда нажата кнопка «Сохранить», она все равно проверяет поля из первой формы, а не форму, которой принадлежит кнопка «Сохранить».

Мой Ajax выглядит так

$(document).ready(function(){

    //    $('form').submit(function() {
    $('form').live('submit', function(){

    var title = $('#title').val();

        ...

Здесь проблема может быть? Я пробовал с прокомментированным кодом, но это тоже не работает.

Есть идеи, где может быть проблема?

Ответы [ 2 ]

2 голосов
/ 10 мая 2011

$('#title').val(); означает «Получить значение одного-единственного входа с идентификатором title ».

Если вы нарушили спецификацию и у вас есть несколько элементов с одинаковым идентификатором, браузеры, как правило, восстановятся после ошибки, вернув первый такой элемент.

Вам, вероятно, следует изменить идентификатор на что-то вроде: idOfForm_title (чтобы ваши <label> элементы все еще работали)

А затем используйте: this.elements.title.value, где title - это значение атрибута name this автоматически преобразуется в форму, в которой запускается событие submit).

1 голос
/ 10 мая 2011

Я думаю, вы должны дать своим формам class, например class="create" для первой / создать форму и затем class="edit" для второй / изменить форму.

Тогда вы можете изменить свой jQuery, чтобы он выглядел как

$(document).ready(function() {
    // only work with the 'create' form
    $('form.create').live('submit', function(e) {
        e.preventDefault(); // stop the form's default action

        // the rest of your code
    });

    // only work with the 'edit' form(s)
    $('form.edit').live('submit', function(e) {
        e.preventDefault(e); // stop the form's default action

        // the rest of your code
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...