livevalidation.js自定义用户名检查功能

时间:2011-08-05 18:37:23

标签: php jquery validation livevalidation

我确信这可能是我不做的事情。运行livevalidation.js jquery插件(livevalidation.com)。它提供自定义函数回调。我正在尝试检查用户名是否可用。服务器端工作正常,我在数据变量中得到了正确的响应......

这是我的JS:

Validate.Username = function(value, paramsObj) {
    var paramsObj = paramsObj || {};
    var message = paramsObj.failureMessage || "Username is not available";
    var isSuccess = true;

    $.post("<?php echo fURL::getDomain(); ?>/ajax/username", 
        function(data) {
            if (data.status === 'notavailable')
            {
            Validation.fail('oops, not available.');
            }               
            });
};

我用它来调用它:

var username = new LiveValidation('username', { validMessage: curr_username + "is available!" });
username.add( Validate.Presence, { failureMessage: "Choose a username" });
username.add( Validate.Username, { failureMessage: "Username is not available." } );

我得到的问题是:

Uncaught ReferenceError: Validation is not defined

如果我将Validation.fail()置于.post()函数之外,则可以正常工作。所以我很确定这是因为它无法在.post()函数中引用。

我尝试过使用回调函数

if (data.status === 'notavailable')
{
    status_not_available();
}

我得到了同样的错误。

我意识到这可能非常简单,但任何帮助都会受到赞赏。提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试将其从Validation.fail更改为Validate.fail

尝试将其包装在另一个函数中,并尝试将validateStatus(status)函数放在Validate.Username函数的内部和外部。下面的例子是

Validate.Username = function(value, paramsObj) {
var paramsObj = paramsObj || {};
var message = paramsObj.failureMessage || "Username is not available";
var isSuccess = true;

$.post("<?php echo fURL::getDomain(); ?>/ajax/username", 
    function(data) {
          validateStatus(data.status);      
        });

function validateStatus(status){
     if (status === 'notavailable'){
           Validate.fail("not available");
      }
}

};

答案 1 :(得分:0)

我遇到了同样的问题。 我发现了以下内容http://forum.jquery.com/topic/ajax-return-value-on-success-or-error-with-livevalidation,但未能使其正常运行。 但是,是的!在这个时刻,我制作了一个让它表现得好的som(糟糕的)javascript插件,我认为:)

这就是我使用的。


        function check_avail(name, id, postUrl)
    {
       var dataVal = name+'='+$(id).val();
       var isaccepted = ''
       $(id).next('div').remove();

       $(id).after("

Undersøger om "+name+" er ledigt

"); $.ajax({ url: postUrl, cache: false, type: 'post', dataType: 'json', data: dataVal, async: false, success: function(data) { if( data.success == 'true' ) { $('#'+name+'-availability').remove(); //return false; isaccepted = false; } if( data.success == 'false' ) { $('#'+name+'-availability').remove(); // name.destroy(); isaccepted = true; } } }); if (isaccepted == false) { return false; } else{ return true }; }


    f1.add( Validate.Custom, { against: function() {
     return check_avail( 'brugernavn', '#ft001', 'usernamecheck.asp' ); 
    }, failureMessage: 'Brugernavnet er optaget' } );

希望它可以帮到你:) 您可以在开头的链接上阅读的json查询:) (我对javascript并不熟悉,而且“isaccepted”解决方案可以做得更好)