所有:

我正在开发一个使用jquery / mvc / knockout的Web应用程序,该应用程序将数据收集并使用$ .post以相当昂贵的事务将其发布到服务器。

我不希望用户“双击”或不耐烦地单击两次。除了UI线索以外,我还想出了一种方法可以实现此目的,但是我想确保这样做没有任何警告或隐患。

下面是一个JSFiddle,它使用setTimeout模拟“通过ajax提交”请求。我将函数“ alreadyClicked”上的内部字段设置为true,运行“ ajax request”,然后在后期处理完成后将其设置为false。如果您转到下面的小提琴,并且拥有一个支持console.log的调试器工具(即firefox),则可以疯狂地单击并观察它进入方法的时间以及跳过该过程的时间。

http://jsfiddle.net/puhfista/vVUCm/7/

感谢您提供有关此主题的任何建议,您喜欢渲染。

最佳答案

您在问题中提到您在此项目中使用淘汰赛。实现所需目标的淘汰方法是在视图模型中声明一个称为“ isPosting”的可观察对象:

self.isPosting = ko.observable(false);


在您的html提交按钮中,数据绑定到此可观察的对象:

<button data-bind="click:doPost, disable: isPosting">Submit</button>


在您的“ doPost”点击处理程序中,需要在发布发生时将isPosting设置为true,在发布完成后将其设置为false。

08-19 07:43