2013-05-08 47 views
1

我有一个Javascript函数,它根据文档中的某些隐藏字段更改某些元素的位置,这些字段会使用ajax定期更新。JSF在onClick事件之前执行Ajax

问题:

由于javascript函数(的onclick)的Ajax的(它重新加载在其中hiddenfields是元素),其应该改变位置的元素是总是落后一圈之前执行。

我想才达到什么:

如果AJAX重新加载onclick事件之前执行的问题将得到解决,所以参考hiddenfields是正确的。 (而不是在后退)

这是可能的任何方式或有其他解决这个问题?

代码:

电话:

   <h:commandButton id="dice" onclick="animate()" alt="W&uuml;rfel mit einer Eins" image="resources/img/wuerfel1.png" action="#{spiel.dice()}" tabindex="4" title="W&uuml;rfel mit einer Eins"> 
        <f:ajax render="gameinfo" />        
       </h:commandButton> 

JavaScript函数:

function animate() { 
     var newPlayer1 = document.getElementById('player1score').value; 
     var newPlayer2 = document.getElementById('player2score').value; 
     // Spieler 1 Animation 
     $("#player1").fadeOut(700, function() { 
      $("#player1").appendTo(newPlayer1); 
      $("#player1").fadeIn(700); 
}); 
     // Spieler2 Animation 
     $("#player2").delay(1400).fadeOut(700, function() { 
      $("#player2").appendTo(newPlayer2); 
      $("#player2").fadeIn(700); 
}); 
    } 

回答

2

您应该使用oneventf:ajax

<h:commandButton id="dice" alt="W&uuml;rfel mit einer Eins" image="resources/img/wuerfel1.png" action="#{spiel.dice()}" tabindex="4" title="W&uuml;rfel mit einer Eins"> 
     <f:ajax render="gameinfo" onevent="animate" />        
    </h:commandButton> 

更改animate功能分为

function animate(data) { 
    if (data.status === 'success') { 
     //your original code goes here... 
    } 
} 

另外:通过BalusC读这样的回答:Proccess onclick function after ajax call

+0

That's天才要比,它的作品! :D Thx寻求帮助 – 2013-05-08 15:11:12

+0

不客气 – Daniel 2013-05-08 15:13:49

相关问题