0

我确信这可能是我没有做的简单事情。运行 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();
}

我犯了同样的错误。

我意识到这可能非常简单,但我们将不胜感激。先感谢您。

4

2 回答 2

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");
      }
}

};
于 2011-08-05T19:07:11.073 回答
0

我有同样的问题。我发现了以下内容, http: //forum.jquery.com/topic/ajax-return-value-on-success-or-error-with-livevalidation但无法使其正常工作。但是,是的!就在此时,我制作了 som(蹩脚)javascript 插件,让它表现得很好,我想 :)

这就是我使用的。

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

       $(id).after("

Undersøger om "+name+" er ledigt

"); $.ajax({ 网址:postUrl, 缓存:假, 类型:'发布', 数据类型:'json', 数据:数据值, 异步:假, 成功:函数(数据){ 如果(data.success == 'true') { $('#'+name+'-availability').remove(); //返回假; 已接受 = 假; } 如果(数据.成功 == '假') { $('#'+name+'-availability').remove(); // name.destroy(); 已接受 = 真; } } }); 如果(已接受 == 假){ 返回假; } 别的{ 返回真 }; }

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

希望它对您有所帮助 :) 您可以在开头的链接上阅读 json 查询 :) (我一点也不擅长 javascript,并且“已接受”的解决方案可能会变得更好)

于 2011-08-07T10:46:21.767 回答