【问题标题】:Js Temporary Stop Progress of click()js 临时停止 click() 的进度
【发布时间】:2012-12-27 06:30:44
【问题描述】:

我正在寻找停止按钮单击进度的方法,直到确认完成。

请建议一种暂时停止进度的方法,直到“显示确认框”返回 true。现在我的函数将继续向前运行。

.click(function(){
    //Show Confirm Box <- will return true of false

    //Start Process if true;

});

非常感谢。

【问题讨论】:

  • 您的意思是要阻止点击事件的发生,例如拦截对表单提交按钮的点击,或者只是您想等待代码中的其他事件(即您自己的对话框)?
  • 我相信,我想等待另一个函数给它一个值,'Show Confirm Box()' 中的 true 或 false

标签: javascript jquery button click progress


【解决方案1】:

confirm() 的调用是同步的。也就是说,在用户关闭该框之前,您的代码实际上会暂停。

if (confirm('some message')) {
    // User confirmed, do something here
}

现在,如果您不使用confirm(),而是使用您自己的自定义模式对话框或类似的东西,那么您将需要使用回调。

您不应阻止脚本执行,因为该页面将显示为对用户锁定。相反,将回调函数传递给显示对话框的函数,并在完成后让对话框调用该函数。

function showDialog (confirmCallback) {
    // Show dialog here
    if (result === 'yes') { // replace this, obviously
        confirmCallback();
    }
}

.click(function(){
    showDialog(function () {
        // start process
    });
});

【讨论】:

  • 非常感谢,我是一个js初学者,可以再问一个问题吗?这里的confirmCallbac不是参数而是系统参数,和confirmCallback()一样,confirmCallback()会自动回到.click showDialog()。我理解对了吗?
  • 不,confirmCallback 实际上是一个参数。在 JavaScript 中,您可以将函数分配给变量,就像您可以对任何其他对象一样。在点击处理程序中,当调用showDialog() 时,您实际上是在将一个匿名函数作为第一个参数传递给showDialog()。该函数被分配给showDialog() 内的confirmCallback,就像任何其他参数的任何其他值一样。
【解决方案2】:

点击事件的参数是一个函数处理函数,当点击事件发生时会被执行。

因此,当确认对话框返回 false 值时,您始终可以从该函数返回。

代码会是这样的

jQuery(".button").click( function(){
   var ans = confirm("Do you want to proceed further ?");
   if(!ans) return;

   alert("Now you can code the rest ");

});​

我已经创建了一个小提琴,请在下面查看

http://jsfiddle.net/shidhincr/Ubj7S/1/

【讨论】:

  • 非常感谢,因为我想使用自己的对话框,所以我创建了一个类似 var ans = Show-dialog() 的函数,而不是 confirm()。问题是我不知道如何在 if(!ans) 返回之前停止整个进度;
【解决方案3】:

你看到这个问题了吗? pausing execution in custom confirm box

只需根据用户在确认框中输入的代码拆分代码并调用函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 2016-12-04
    • 2015-03-11
    • 1970-01-01
    相关资源
    最近更新 更多