我有一个表单验证器,我必须单击两次发送按钮将数据发送到ajax - 为什么?

时间:2015-10-17 22:18:15

标签: jquery jquery-validate

所以测试场景很简单:

1)运行我的小提琴http://jsfiddle.net/5WMff/1364/

2)例如第三个文本字段为现有的

添加一些值

3)点击save按钮

4)该字段变为绿色,但没有弹出窗口。

5)再次点击save按钮,然后出现弹出窗口。

为什么这样工作?

基本上我想验证字段并稍后将数据发送到ajax。由于我不知道如何在jsfiddle上模拟发送到ajax,我在那里留下了简单的弹出窗口 - 你仍然可以看到奇怪的行为。我认为错误是因为我一起使用这两个属性:

success: function (element) {
            element.addClass('valid')
                .closest('.form-group').removeClass('has-error').addClass('has-success');

        },
        submitHandler: function (form) { alert("here!");
        }

但另一方面,我不确定是不是原因......这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

您错误地使用了success回调函数。您使用highlight执行success所做的任何操作都会“撤消”。

unhighlight旨在在字段通过验证时使用错误标签元素。换句话说,当字段通过验证时通常不需要错误标签,因此如果要在验证通过时显示“成功”消息来代替错误消息,则可以使用unhighlight选项。

无论如何,将highlighthas-success一起使用,它会正常工作。您也错误拼写了highlight: function (element) { $(element).closest('.form-group').removeClass('has-success').addClass('has-error'); }, unhighlight: function (element) { $(element).closest('.form-group').addClass('has-success').removeClass('has-error'); }, 课程。

DEBUG=myapp & npm start

DEMO:The success callback option