Проверка формы JQuery с всплывающим окном оповещения - оповещение все еще отображается с допустимым подтверждением - PullRequest
0 голосов
/ 10 марта 2012

Я использую функцию проверки Jquery для проверки формы.До сих пор я добавлял сообщение об ошибке в элемент страницы, но теперь я хочу отобразить его во всплывающем окне с предупреждением.Во всплывающем окне предупреждения отображается сообщение об ошибке, когда пользователь ничего не выбрал, однако всплывающее окно по-прежнему отображается при отправке действительной формы (на этот раз без сообщения об ошибке).

Как остановить появление всплывающего окна?после правильной отправки формы?

Вот мой код js, я включил предупреждение для переключателей.Вы можете увидеть это в действии на http://hiplogger.hip -zone.co.za / partner / mobile

$("#quickieform").validate({
    rules: {
        answer: "required"
    },
    answer: {
        answer: "Please make a selection"
    },
    errorPlacement: function(error, element) {
        if ( element.is(":radio") )
            alert(error.html());

        else if ( element.is(":checkbox") )
            error.appendTo( ("#alertbox") );

        else
            error.appendTo( ("#alertbox") );
    },
    submitHandler: function(form) {
        // do other stuff for a valid form
        form.submit();
    },
    success: function(label) {
        // set   as text for IE
        label.html(" ").addClass("checked");
    }
});

Ответы [ 2 ]

1 голос
/ 11 марта 2012

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

$("#quickieform").validate({
    rules: {
            answer: "required"
        },
    invalidHandler: function(form, validator) {

    },
    errorPlacement: function(error, element) {
        if ( element.is(":radio") && error.html != "")
           // error.appendTo( ("#alertbox") );
            alert(error.html());

        else if ( element.is(":checkbox") )
           // error.appendTo( ("#alertbox") );
        alert(error.html());

        else
            error.appendTo( ("#alertbox") );
    },
    submitHandler: function(form) {
            form.submit();
    }

 })
0 голосов
/ 10 марта 2012

Может быть, errorPlacement выполняется независимо от фактической ошибки.Это может иметь место, потому что когда вы запускаете $("#quickieform").valid(), он запускает проверку - отключает оповещение, а затем возвращает true.Я не увидел фактическое сообщение об ошибке в предупреждении.Вы можете переместить это в функцию invalidHandler:

$("#quickieform").validate({
    rules: ...
    answer: ...
    invalidHandler: function(form, validator) {
      var errors = validator.numberOfInvalids();
      if (errors) {
        alert("You have " + error + " errors that need to be fixed");
      }
    }
    ...
 })

или просто изменить свою errorPlacement, чтобы также проверить, что error.html != ""

if ( element.is(":radio") && error.html != "")

Надеюсь, это поможет!

...