Javascript 如何在成功输入折扣代码后停止单击事件?

Javascript 如何在成功输入折扣代码后停止单击事件?,javascript,jquery,Javascript,Jquery,编辑:上面的建议不是这个问题的答案。请看tymeJV的回答 我的表单上有一个offer代码字段,但一旦它被应用,我希望它停止。目前,您可以继续输入报价代码,它将继续折扣价格 我怎样才能阻止这种事情发生 $("#offerapply").click(function () { if ($("input[name='offercode']").val().toLowerCase() == "discount10") { price = (price / 10) * 9; $("#

编辑:上面的建议不是这个问题的答案。请看tymeJV的回答

我的表单上有一个offer代码字段,但一旦它被应用,我希望它停止。目前,您可以继续输入报价代码,它将继续折扣价格

我怎样才能阻止这种事情发生

$("#offerapply").click(function () {
if ($("input[name='offercode']").val().toLowerCase() == "discount10")  {
    price = (price / 10) * 9;
    $("#offermsg").text('Thank you. Your 10% discount has been applied.');
}
else {
    $("#offermsg").text('Sorry, that Offer Code was not recognised.');
}
calculate();

请看一下jquery方法。因此,您可以尝试以下代码:

$("#offerapply").one('click', function () {
    // your code here
})

if
true块中,解除绑定以防止多次折扣:

if ($("input[name='offercode']").val().toLowerCase() == "discount10")  {
    price = (price / 10) * 9;
    $("#offermsg").text('Thank you. Your 10% discount has been applied.');
    $(this).off();
}


一个简单的解决方案是只存储是否应用了提供代码,但如上所述,确保您也在进行服务器端验证

var offercodeApplied = false;

$("#offerapply").click(function () {
if (offercodeApplied) {
    $("#offermsg").text('Offer code already applied.');
}
else if ($("input[name='offercode']").val().toLowerCase() == "discount10")  {
    offercodeApplied = true;
    price = (price / 10) * 9;
    $("#offermsg").text('Thank you. Your 10% discount has been applied.');
}
else {
    $("#offermsg").text('Sorry, that Offer Code was not recognised.');
}
calculate();

尝试使用。我建议不要使用客户端代码来检查折扣代码。这样做非常不安全。@JohnFx-该脚本仅用于显示总价。它没有将价格发送到服务器。期待“为什么我的客户会获得2000%的折扣?”问题。感谢您的回复,但如果他们输入错误的代码,我需要它继续工作。这正是我所寻找的。谢谢
$(document).ready(function(){
    $("#offerapply").one('click', function () {
        // your code here
    })
});
$.fn.liveAndLetDie = function(event, callback) {
    var sel = this.selector;
    function unbind() { $(sel).die(event, callback).die(event, unbind); }
    return this.live(event, callback).live(event, unbind);
};
$('your elements').liveAndLetDie('click', function(e) { /* do stuff */ });
$('your element').live('click',function(e) {
     $('your element').die('click'); // This removes the .live() functionality
});
var offercodeApplied = false;

$("#offerapply").click(function () {
if (offercodeApplied) {
    $("#offermsg").text('Offer code already applied.');
}
else if ($("input[name='offercode']").val().toLowerCase() == "discount10")  {
    offercodeApplied = true;
    price = (price / 10) * 9;
    $("#offermsg").text('Thank you. Your 10% discount has been applied.');
}
else {
    $("#offermsg").text('Sorry, that Offer Code was not recognised.');
}
calculate();