2017-04-24 23 views
-1

を押した後にループで発生します。これは、2番目のevent==='afterSubmit'のサブミットボタンをクリックした後のJSカスタムイベントのコードです。このイベント全体を繰り返し閉じるまで繰り返します。私はe.stopImmediatePropagation();を使用してこのイベントを停止していますが、ヒントはありませんか?私が見JavaScriptカスタムイベントは、サブミットボタン

{ 
    customEventMap: { 
     eventMap: [{ 
      events: '*', 
      args: [function (e) { 
       return e; 
      }], 
      method: function (e) { 
       // alert('hello ..'); 
       if (e.fullEventName === 'accounts.login') { 

        //alert(' Heyy..'); 

        if (typeof (e.profile.zip) !== 'undefined') { 
         //alert('hey Yo..'); 
         if (e.profile.zip !== '') { 
          alert('Yo 1st step ..'); 
          alert(e.profile.zip); 
          gigya.accounts.showScreenSet({ 
           screenSet: 'New-RegistrationLogin', 
           startScreen: 'Address-Info' 
          }); 
         } 
        } 
       } 
       if (e.eventName === 'afterSubmit') { 

        alert(' Email'); 

        if (typeof (e.profile.zip) !== 'undefined') { 
         //alert('hey .'); 
         if (e.profile.zip !== '') { 
          alert('Yo 2nd step..'); 
          alert(e.profile.zip); 

          gigya.accounts.showScreenSet({ 
           screenSet: 'New-RegistrationLogin', 
           startScreen: 'Bio' 

          }); 

         } 
        } 
       } 
       e.stopImmediatePropagation(); 
      } 
     }] 
    } 
} 

答えて

0

ことの一つは、あなたが押すたびに新しい画面に提出し、afterSubmitイベントを使用して、そしてその中accounts.showScreenSetを呼び出していることから、それが今度は、再びイベントを呼び出すということです。これはおそらく望ましくない動作です。

第2に、チェックしているフィールドが空ではなくフルである場合にのみ、画面を起動する方が良いです。これは、ユーザーがすでにフィールドに入力している場合に画面が常に起動することを意味します。

あなたはこれを試すことができます。また

if (e.eventName === 'afterSubmit') { 

       alert('afterSubmit Fired'); 

       if (typeof (e.profile.zip) !== 'undefined') { 
        if ((e.profile.zip == '') || (e.profile.zip == null)) { 
         alert('Yo 2nd step..'); 
         alert('Zip is empty, please fill out your zipcode on the next screen'); 

         gigya.accounts.showScreenSet({ 
          screenSet: 'New-RegistrationLogin', 
          startScreen: 'Bio' 
         }); 
        } 
       } 
      } 

、既存のユーザのプロファイルに追加情報を追加するとき、それはProfileUpdate画面-セット内の画面を使用するのがベストプラクティスをお勧めします、ではないRegistrationLoginスクリーンセットを。

+1

はい私はあなたが提案したように空の状態をチェックする条件を変更しました。しかし、(typeof(e.profile.zip)!== 'undefined')でもこの条件を削除しなければなりませんでした。助けてくれてありがとう、今働いている。 –

+0

zipフィールドに値があっても、少なくとも1回実行した後は、このコードをイベントで作成することはできますか?イベントの後のスクリーンセットは、一度だけロードする必要があります –

+0

Alok、あなたは下のリンクを見ることができます。基本的には、サイトのスキーマに新しいブール値フィールドを作成し、このフィールドの値がfalseまたはnullで画面が表示された場合にのみ画面を表示する必要があります。フィールドを** true **に設定しますそれが必要な場合は、他のフィールドにデータが含まれているかどうかもチェックします)。そのページで**コードの例「登録後の時間」**を見て、設定方法を知ることができます。 http://developers.gigya.com/display/GD/Progressive+Profiling#ProgressiveProfiling-BestPractice-GlobalConfiguration – Levi

関連する問題