我想实现以下功能。我有多个带按钮的表单。当我点击该按钮时,我希望它在2秒内更改颜色和文本。如果在此时间范围内再次点击,则重置并重新开始旋转。
到目前为止,我的代码按预期工作。但是,在这2秒内单击另一个表单的按钮时,旋转会停止,因为timerId被clearTimeout清除。
请查看我的示例,当您单击“order1”并在2秒内单击“order2”时,“order1”不会返回其原始状态。是否有办法让其他表单不互相干扰?
到目前为止,我的代码按预期工作。但是,在这2秒内单击另一个表单的按钮时,旋转会停止,因为timerId被clearTimeout清除。
请查看我的示例,当您单击“order1”并在2秒内单击“order2”时,“order1”不会返回其原始状态。是否有办法让其他表单不互相干扰?
var timerId, delay = 2000;
$(".product-form").submit(function(e){
var button = $(this).find('button[type=submit]'),
order = button.find("span:eq(0)"),
added = button.find("span:eq(1)");
clearTimeout(timerId);
added.hide();
order.hide();
button.addClass("green");
added.slideDown("slow");
timerId = setTimeout(function() {
added.hide();
order.show();
button.removeClass("green");
}, delay);
e.preventDefault();
});
form {
float: left;
padding: 10px;
}
.hide {
display: none
}
#button {
width: 200px;
height: 40px;
border: none;
background: orange;
}
.green {
background: green !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class="product-form" action="#cart" method="post">
<button id="button" type="submit">
<span>Order1</span>
<span class="hide">✓ Added</span>
</button>
</form>
<form class="product-form" action="#cart" method="post">
<button id="button" type="submit">
<span>Order2</span>
<span class="hide">✓ Added</span>
</button>
</form>
<form class="product-form" action="#cart" method="post">
<button id="button" type="submit">
<span>Order2</span>
<span class="hide">✓ Added</span>
</button>
</form>