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(name、id、postUrl)
    {{
       var dataVal = name +'=' + $(id).val();
       var isaccepted =''
       $(id).next('div')。remove();

       $(id).after( "

Undersøgerom"+name +" er ledigt

"); $ .ajax({ url:postUrl、 キャッシュ:false、 タイプ:'投稿'、 dataType:'json'、 データ:dataVal、 非同期:false、 成功:function(data){ if(data.success =='true') {{ $('#' + name +'-availability')。remove(); //falseを返します; isaccepted = false; } if(data.success =='false') {{ $('#' + name +'-availability')。remove(); // name.destroy(); isaccepted = true; } } }); if(isaccepted == false){ falseを返します。 } そうしないと{ trueを返す }; }

    f1.add(Validate.Custom、{に対して:function(){
     return check_avail('brugernavn'、'#ft001'、'usernamecheck.asp');
    }、failureMessage:'Brugernavnet er optaget'});

お役に立てば幸いです:)最初のリンクで読むことができるjsonクエリ:)(私はjavascriptにまったく熟練しておらず、「受け入れられた」ソリューションはおそらくはるかに良くなる可能性があります)

于 2011-08-07T10:46:21.767 に答える