Использование Javascript для отправки форм - PullRequest
4 голосов
/ 06 июня 2010

РЕДАКТИРОВАТЬ: По какой-то причине, если я изменяю ввод в код, код отправки работает нормально. Хорошо, это работает, я просто сделаю стиль тега похожим на тег ввода в css.

Я использую функцию jQuery для отправки формы при нажатии определенной кнопки, однако, похоже, это не влияет на форму.

Мой код выглядит следующим образом: HTML:

<form id="loginForm" action="" method="POST">
    <input class="loginInput" type="hidden" name="action" value="login">
    <input id="step1a" class="loginInput" type="text" name="username">
    <input id="step2a" class="loginInput" type="password" name="password"  style="display:none;">
    <input id="step1b" class="loginSubmit" onclick="loginProceed();" type="button" name="submit" value="Proceed" title="Proceed" />
    <input id="step2b" class="loginSubmit" onclick="submitlogin();" type="button" value="Validate" title="Validate"  style="display:none;" />
</form>

Javascript:

function submitlogin()
{
    $("#loginForm").submit();
}

function loginProceed()
{
    $("#step1a").fadeOut("slow",function(){
        $("#step2a").fadeIn("slow", function(){
            $("#step2a").focus();
        });
    });
    $("#step1b").fadeOut("slow",function(){
        $("#step2b").fadeIn("slow");
    });
    $("#step1c").fadeOut("slow",function(){
        $("#step2c").fadeIn("slow");
    });

}

Однако, когда я нажимаю кнопку, абсолютно ничего не происходит.

PS. Эта функция может показаться бессмысленной, так как я могу просто использовать input type = "submit", но я изначально хотел, чтобы это имело некоторые дополнительные функции, я раздробил функцию до пустоты для тестирования.

Ответы [ 7 ]

4 голосов
/ 06 июня 2010

Вам необходимо указать одну форму.

$("#loginForm").submit();
4 голосов
/ 06 июня 2010

Попробуйте использовать другое имя для ввода с name="submit".Без этого у меня нормально работает.

3 голосов
/ 06 июня 2010

РЕДАКТИРОВАТЬ: Дополнительная информация добавлена ​​к вопросу. Вы, кажется, вызываете неправильную функцию. Кнопка отправки, которая не display:none, вызывает loginProceed(), а не submitlogin().

Кроме того, если функции определены в функции ready() jQuery, они будут находиться вне области видимости, если вы не определите их как глобальные. Живой пример: http://jsfiddle.net/eSeuH/

Обновленный пример: http://jsfiddle.net/eSeuH/2/

Если код, который вы отметили в комментарии, запускается до загрузки DOM, он не будет работать. Необходимо убедиться, что он не запускается до тех пор, пока не будет загружен DOM (или хотя бы элемент, на который он ссылается).

$(document).ready(function() {
    $("#loginForm").submit(function() { alert("clicked"); });
});
0 голосов
/ 06 июня 2010

По какой-то причине, если я изменяю ввод в код, код отправки работает нормально.Хорошо, это работает, я просто сделаю стиль тега похожим на тег ввода в css.

0 голосов
/ 06 июня 2010

Попробуйте заглянуть в консоль отладки Firefox.Может быть, у вас есть ошибки в javascripts ???Потому что даже если действие пустое, все работает.

0 голосов
/ 06 июня 2010

Нет метода jquery 'submit' (по крайней мере, для ajax): http://api.jquery.com/category/ajax/

Возможно, вы хотите вызвать метод отправки формы:

$("#loginForm")[0].submit();

Помните, селектор jquery всегда возвращает массив.

редактировать
«submit» фактически связывает обработчик для отправки события, а не для отправки формы:
http://api.jquery.com/submit/

0 голосов
/ 06 июня 2010

Кроме того, ваш атрибут действия в теге формы пуст. Что вы ожидаете, когда форма будет отправлена?

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