【问题标题】:How to disable Jquery prompt save button on first click如何在第一次单击时禁用 Jquery 提示保存按钮
【发布时间】:2014-05-16 13:51:01
【问题描述】:

我正在使用 jQuery 提示来提示用户保存。因此,用户单击“保存”按钮,Jquery 提示将显示并询问用户是否确定他/她想要保存更改。问题是,用户可以在提示关闭之前多次单击 jQuery Save 提示按钮。结果,每次单击提示保存按钮时,我的保存例程都会运行一次,这会导致数据库中出现重复记录。我需要在第一次单击时禁用提示保存按钮,或者在第一次单击时关闭提示窗口以防止多次保存。我该怎么做?

客户端代码:

$.prompt("Are you sure you want to save? You will not be able to change your decision after it's been saved.", {
    title: "Save?",
    buttons: { "Save": true, "Cancel": false },
    submit: function (e, v, m, f) {
        if (v) {
            response = saveUpdates(LoanDetails);
        }
    }
});

【问题讨论】:

  • 您可能需要删除 knockout.js 标记,因为此代码中的任何地方都没有使用它。

标签: javascript jquery knockout.js impromptu


【解决方案1】:

我在这里创建了一个小提琴:http://jsfiddle.net/smurphy/4fqjR/

解决方案有点复杂。我认为会有一种更简单的方法来做到这一点,但是在查看了documentation 之后,我找不到任何内置功能。

代码如下:

submit: function (value, message) {
        if (value) {
            $(message.prevObject)
               .find('button[value="true"]')
               .attr('disabled', true);

            //TODO: perform save 
            //response = saveUpdates(LoanDetails);
        }
    }

message 参数是对文本描述的引用,因此您可以通过从该起点在 DOM 中导航来找到该按钮。

【讨论】:

  • 我确实有,但它不会影响 jQuery 提示上的保存按钮,只会影响输入(它会禁用输入,而不是 jQuery 提示按钮)。
  • 哦!误解了你的问题。
  • 更新问题以提示保存按钮
  • 感谢 Scott,但它仍然无法正常工作。不可能这么难。
  • 好的,我创建了一个小提琴来调试并找出实际传递给提交函数的参数。这应该适合你。
【解决方案2】:

尝试使用全局变量作为标志, 或禁用提示按钮(如果您使用按钮来调用提示) $("#promptbutton").prop("disabled",true);

编辑:

更简单的解决方案是在调用 saveUpdates 函数之前或在函数开始时简单地关闭提示:

jQuery.prompt.close();

【讨论】:

  • 这更适合作为评论,因为它没有提供对 OP 问题的答案。顺便说一句,如果您单击问题中的标签,它们可能会将您引导至插件。 :)
  • 哦,抱歉,我没有注意到指向插件的标签,我将编辑我的答案。谢谢
  • @JayBlanchard,Trader 没有足够的代表来添加 cmets,应该怎么做?
  • 老实说@ScottMurphy,他应该做足够的事情来获得足够的代表来发布 cmets。已经在meta.stackoverflow.com 上进行了令人作呕的讨论
  • 我试着把 jQuery.prompt.close();在 if (v) 中但没有工作。
猜你喜欢
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
相关资源
最近更新 更多