当我使用多个jQuery change()方法调用函数时,如何避免多次调用函数?

维克多·宗永·田森

我有一个价格标签,每当用户更改我的商品下拉菜单出发日期退货日期的值时,它就会动态更改getPrice()每当这3个都改变时,就会打电话

我的目标是只调用一次getPrice()方法,但仍根据当前选择的产品出发日期退货日期计算正确的价格

请注意,getPrice()将dropdown离开日期返回日期作为参数。

我的代码基本上是这样的:

编辑-我放置了一个与我的代码相似的工作代码段。

$(document).ready(function () {
getDeptFormat();
getRetFormat();

$("#dropdown").change(function () {
getDeptFormat();
getRetFormat();
getPrice();
});

$("#departureDate").change(function () {
getPrice();
});

$("#returnDate").change(function () {
getPrice();
});

$("#reset").click(function () {
$("#totalPrice").html('').append('0');
})

})


function getDeptFormat() {
    $("#departureDate").daterangepicker({    
        singleDatePicker: true, 
          "startDate":getDeptMinDate(),     
    });
}

function getRetFormat() {
    $("#returnDate").daterangepicker({    
        singleDatePicker: true,  
       "startDate":getRetMinDate(),     
    });
}

function getPrice() {
  $("#totalPrice").append("5");
}

function getDeptMinDate() {
    var add = "10/25/2019";
   
   if (parseInt($("#dropdown").val()) == 1)
   {
    add = "10/26/2019";
   }
   else if (parseInt($("#dropdown").val()) == 2)
   {
   add = "10/27/2019";
   }
   else if (parseInt($("#dropdown").val()) == 3)
   {
   add = "10/28/2019";
   }   
    return add;
}

function getRetMinDate() {
    var add = "10/26/2019";
   
   if (parseInt($("#dropdown").val()) == 1)
   {
    add = "10/27/2019";
   }
   else if (parseInt($("#dropdown").val()) == 2)
   {
   add = "10/28/2019";
   }
   else if (parseInt($("#dropdown").val()) == 3)
   {
   add = "10/29/2019";
   }   
    return add;
}
#container {
  border: 1px solid red;
padding :20px;
}
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />


<div id="container">
 <select  id="dropdown">
                            <option value="1">Product 1</option>
                            <option value="2">Product 2</option>
                            <option value="3">Product 3</option>
                        </select>
 <input type="text"  id="departureDate" spellcheck="false" autocomplete="off" />
 <input type="text"  id="returnDate" spellcheck="false" autocomplete="off" />

<div>
Price:<span id="totalPrice">0</span></div>
<button type="button" id="reset">Click to reset price</button>

</div>

请注意,每当我更改下拉菜单时,getPrice()函数都会被调用3次。getPrice()函数有点慢,这就是为什么当它被多次调用时会令人讨厌的原因。最好仅调用一次getPrice()函数但仍根据当前所选的下拉列表,出发日期和返回日期进行计算的最佳方法是什么?

我目前正在尝试理解异步javascript和Promise,因为它们可能会对我的问题有所帮助。抱歉,我的问题有点令人困惑。

阿尔法兹(Alfaz Jikani)

不要将更改事件用于日期值更改检测。更改日期时,请使用datepicker回调函数。

例如 删除以下代码:

$("#departureDate").change(function () {
getPrice();
});

使用此代码:

$("#departureDate").daterangepicker({    
        singleDatePicker: true, 
          "startDate":getDeptMinDate(),     
    }, function(start, end, label) {
        getPrice();
    });

密码笔链接:https : //codepen.io/alfazjikani/pen/wvvPJeg

参考:https : //www.daterangepicker.com/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在useEffect中使用didmount时如何避免清除函数被调用?

避免多个函数调用?

如何避免if语句并调用多个构造函数

如何防止在Jquery中多次调用函数

为什么在使用 futureBuilder 时多次调用我的 getRoute() 函数?

使用 flatMapSingle 时如何避免多次映射器调用

当我不知道签名时如何调用函数?

当我调用onClick函数时如何隐藏删除按钮

当我从应用程序调用函数时,如何正确调用函数?

解析iOS:当我保存文件并多次调用函数时,无法修改UI元素

如何调用多个函数?

使用Ajax Promise时如何调用函数

如何在case语句中使用函数调用而不多次调用函数

如何使用with-redefs模拟对同一函数的多次调用?

如何使用javascript中的参数多次调用相同的函数?

如何调用jQuery函数?

当我同时将T&和T作为同名函数的返回类型时,如何使用T&调用函数

从jQuery .on(“ change” ... event)中调用多个函数

使用Jquery,当我仅单击两个键之一时为什么调用此函数?

当我在组件A中获得此函数的事件时,如何调用组件B中的函数

避免在C#中调用多个函数

调用函数时如何使用数组对函数进行排队

如何使用构造函数自动调用方法

如何使用 globals() 函数调用类方法?

当我使用预定义函数定义另一个函数时,RaiseError被调用

避免在jquery中重复函数调用?

在Rails应用中多次调用jQuery函数

当多次调用具有多个参数的函数时,python中减少代码重复的好方法是什么?

调用通过构造函数传入的函数时,是否可以避免在Typescript中使用单词“ this”?