Не удается использовать проверку формы JQuery с двумя кнопками HTML-формы

0

HTML:

<form id="myForm">
    <fieldset>
        <ol>
            <li>
                <label for="data">Data</label>
                <input id="data" name="data" type="text" placeholder="Ex.º: 14-02-2014" required>
            </li>
            <li>
                <label for="conta">Conta</label>
                <input id="conta" type="text" name="conta" placeholder="Ex.º: " required>
            </li>
        </ol>
        <input id="oknovo" type="submit" value="OK & Novo" />
        <input id="okfechar" type="submit" value="OK & Fechar" />
    </fieldset>
</form>

JS:

$(document).ready(function () {

    var form = $('#myForm');
    var botao;

    form.validate();
    if (form.valid()) {
        $("#myForm input[type=submit]").click(function (event) {
            botao = $(this).attr('id');
            alert("clique " + botao);
        });
    };
});

Я хочу проверить форму с помощью плагина проверки JQuery.

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

Здесь вы можете увидеть живой JSFiddle .

Теги:
validation
forms

3 ответа

1
Лучший ответ

Поместите свою проверку внутри события клика и начните работу:

$(document).ready(function () {

    var form = $('#myForm');
    var botao;
    form.validate();
    $("#myForm input[type=submit]").click(function (event) {
        if (form.valid()) {
            botao = $(this).attr('id');
            alert("clique " + botao);
        }
        event.preventDefault();
    });
});

Рабочая скрипка

  • 0
    Я думаю, это все, спасибо!
  • 1
    Вы должны вызывать validate() вне обработчика кликов. В противном случае вы настраиваете форму для проверки каждый раз, когда нажимаете, что вам не нужно делать.
Показать ещё 1 комментарий
1

Если форма недействительна в DOM ready (чего она никогда не будет), тогда ваш код для добавления обработчика события к кнопке не будет запущен. Вам следует рассмотреть возможность запуска проверки на другом мероприятии, например, при изменении текста в текстовом поле.

Пример:

$('input[type=textbox]').change(function() {
    // put your validation code here.
});
0

Попробуйте добавить event.preventDefault();

    $("#myForm input[type=submit]").click(function (event) {
        event.preventDefault();
        botao = $(this).attr('id');
        alert("clique " + botao);
    });
  • 0
    Кажется, ничего не изменилось

Ещё вопросы

Сообщество Overcoder
Наверх
Меню