Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在元素的第二个动画上调用承诺函数不是第一个?_Javascript_Jquery_Cordova - Fatal编程技术网

Javascript 在元素的第二个动画上调用承诺函数不是第一个?

Javascript 在元素的第二个动画上调用承诺函数不是第一个?,javascript,jquery,cordova,Javascript,Jquery,Cordova,我正在使用phonegap创建应用程序,我正在使用jquery验证表单客户端。“任何错误”下拉列表并“覆盖”顶部的状态栏,就像没有连接时snapchat所做的那样 为此,我在调用错误时隐藏状态栏,错误向下滑动并显示3秒钟,然后再向上滑动。我想使用promise函数,在再次显示状态栏之前等待错误向上滑动,但我所能做的就是隐藏状态栏,并在错误向下滑动后直接再次显示状态栏 代码(J-query): 这不是完美的,也不是最好的方法,但这是一个短期修复,在某些情况下可能会帮助一些人 如果有人有一个“正确”

我正在使用phonegap创建应用程序,我正在使用jquery验证表单客户端。“任何错误”下拉列表并“覆盖”顶部的状态栏,就像没有连接时snapchat所做的那样

为此,我在调用错误时隐藏状态栏,错误向下滑动并显示3秒钟,然后再向上滑动。我想使用promise函数,在再次显示状态栏之前等待错误向上滑动,但我所能做的就是隐藏状态栏,并在错误向下滑动后直接再次显示状态栏

代码(J-query):


这不是完美的,也不是最好的方法,但这是一个短期修复,在某些情况下可能会帮助一些人

如果有人有一个“正确”的方式来实际使用幻灯片部分的承诺,我们仍然会很感激

我所做的只是在第一个函数下面使用一个setTimeOut函数,在调用动画时将其延迟一段时间

我延迟了3200毫秒而不是3000毫秒,因为这给了slideUp完成的时间,而状态栏看起来整个时间都隐藏在错误后面

jquery:

setTimeout(function(){
      StatusBar.show();
}, 3200);

下面是一个使用
slideDown
completion回调的示例:

$("#error_password").slideDown(function() {
    // This function runs when the slideDown is complete
});
另一种方法是使用
.promise()
,它还有一个额外的好处,就是在所有匹配的元素完成动画后运行(当选择器匹配多个元素时值得):


为什么不使用一个名为淋浴ROR的var语句,将其默认为true。然后在函数开始时,如果(!showError)返回;ROR=错误;最后,在滑动后,将淋浴ROR设置为true
slideDown
slideUp
都有回调,并且都返回延迟,如果您在错误滑下后向我们显示此状态栏的位置,也许我们可以帮助您,我将在代码中放置这些框的css代码。验证工作的方式是,默认情况下,这些都是隐藏的,直到有人键入某个内容并从输入框中“聚焦”,然后检查它是否有效。如果没有,则显示错误message@adeneo它们不会延迟返回,但您可以链接到
.promise()
,得到同样的结果。我刚才检查了jQuery文档,它说它链接了传入的选择器。
setTimeout(function(){
      StatusBar.show();
}, 3200);
$("#error_password").slideDown(function() {
    // This function runs when the slideDown is complete
});
$("#error_password").slideDown().promise().then(function() {
    // This function runs when the slideDown is complete
});