jquery .submit () - PullRequest
       22

jquery .submit ()

1 голос
/ 06 ноября 2010

Попытка проверки в форме без тега <form>.

Это плагин структуры cms, который использует ajax, не знаю, почему входные данные не заключены в <form></form>.

Html:

<div class="feedback">
    <input id="name" type="text" name="ajax-name" value="Your name" />
    <input id="mail" type="text" name="ajax-mail" value="Your e-mail" />
    <button type="submit" id="done">Send</button>
</div>

JS:

$(".feedback #done").click(function() {
    var flag = true;
    if (!$("#name").val()){
        $("#name").addClass('error');
        flag = false;
    }
    if (flag == true)
        $(".feedback").submit();
});

Этот код не работает.

Как выполнить проверку в форме,без тега <form>?

Ajax не знает об этой проверке.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 06 ноября 2010

Вместо

if (flag == true) 
    $(".feedback").submit(); 

сделать

return flag;

Вы не можете отправить без <form>, но вы можете запретить или разрешить клик () даже для завершения. Вот полный код:

$(".feedback #done").click(function() { 
    var flag = true; 
    if (!$("#name").val()){ 
        $("#name").addClass('error'); 
        flag = false; 
    }

    //return the value of flag instead of working with submit() 
    return flag;
});

Если событие щелчка возвращает ложь, это должно предотвратить дальнейшее нажатие. Ваша переменная flag будет true или false, в зависимости от того, как проходит валидация, поэтому она будет определять, будет ли процесс двигаться вперед или нет.

0 голосов
/ 20 июля 2012

@ edit, так что я действительно прочитал вопрос, и хотя он старый, он все еще кажется уместным ...

Просто расширьте кнопку отправки с помощью .change () или .bind () или .on ()при использовании jQuery 1.7.e.preventDefault () может работать с обработчиком ajax?разбить на части функцию отмены привязки razz dazzle, например:

var some_flag_bool = false;
$('#done').click( function (e) {
  e.preventDefault();
  some_flag_bool = true;
  $(this).unbind('#done').submit();
  //return might be considered optional
  return this.some_flag_bool;
});

или что-то подобное в jQuery 1.7, чтобы попытаться поймать вещи рано:

function validation() { if (!foo) { throw new Error("oh noz!"); }
$('body').on('change', 'input', function() { validation(); });

могли бы $ .attr ('отключено'), 'отключено') кнопка, когда документ готов, а затем $ .removeAttr ('отключено') в методе проверки

, но если бы это был я, я бы просто вызвал методы проверки из моего обработчика ajax или использовалплагин jQuery.validation.

0 голосов
/ 06 ноября 2010

альтернативный способ выполнения работы, оберните все дочерние узлы .feedback тегом <form > и затем выполните .submit() на <form id="someid">

$(function () {
    $('.feedback').children().wrapAll('<form id="form" />');
    $('.feedback #done').click(function () {
        var flag = true;
        if (!$("#name").val()) {
            $("#name").addClass('error');
            flag = false;
        }
        if (flag) {
            $("#form").submit();
            return false;
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...