knockoutjs验证异步ajax总是变得无效

时间:2013-03-01 09:27:54

标签: knockout.js knockout-validation

我正在使用淘汰赛验证插件,我没有得到如何验证验证是真还是假

ko.validation.rules['remote'] = {
        async: true,
        validator: function ( val, parms, callback ) { 
            var defaults = {
                url: '/ajax/auth',
                type: 'POST',
                success: callback
            };

            var options = $.extend( defaults, parms );

            $.ajax( options );
        },
        message: 'Default Invalid Message'
    };

var username = ko.observable().extend({ remote : { data: {email : username} }});

// setting it will trigger validation
username.isValidating.subscribe(function(isValid){
     if(isValid){
         // save the username or whatever you do
     }else{
         // invalid 
     }


// ajax.php

function isValidEmail(){
        $data = $this->input->get_post();
        return is_valid_email($data['email']);
};

我总是变得无效 请解释一下这项工作的方式

1 个答案:

答案 0 :(得分:1)

您应该使用callbacktrue对ajax-response调用给定的false,表示验证成功。

    validator: function ( val, parms, callback ) { 
        var defaults = {
            url: '/ajax/auth',
            type: 'POST',
            success: callback
        };

        var options = $.extend( defaults, parms );

        $.ajax(options, function(data){
            // data format depends on your implementation
            // just for example:
            if (data.result == 'ok') {
                callback(true);
            } else {
                callback(false);
            }
        });
    },