2012-11-01 42 views
2

这是我的第一篇文章,我有两个问题:如何重新计算选项:在首次计算后更改选项时选择?

  1. 当我选择(答案)一切从顶部到底部的计算 工作正常。如果我改变“日期”,它会重新计算,但是当我改变“box2”之后,它不会被重新计算。有解决方案吗?

  2. 因为这是我的第一个脚本,我想知道它是否有什么好处?

    $(document).ready(function() { 
    
    $("#box").chained("#box2").change(function() { 
    
    var selector = function (dateStr) { 
    var d1 = $('#from').datepicker('getDate'); 
    var d2 = $('#to').datepicker('getDate'); 
    var diff = 0; 
    
        if (d1 && d2) { 
         diff = Math.floor((d2.getTime() - d1.getTime())/86400000); // ms per day 
        } 
    
        $('#days').val(diff); 
    
    var ttl = $('#totaal'); 
    var discon = $('#discount-container'); 
    var disc = $('#discount'); 
    var tax = $('#tax'); 
    var price = $('#box option:selected').attr('data-price'); 
    var total = diff * price; 
    var tax7 = total*0.07; 
    var disc75 = total*0.075; 
    var disc15 = total*0.15; 
    
    
    if (diff >7 && diff <15) { 
        discon.show('slow'); 
        disc.val("- " + disc75.toFixed(2)); 
        tax.val("+ "+ tax7.toFixed(2)); 
        ttl.val("Naf. "+ (total+tax7).toFixed(2)); 
    } 
    else if (diff >14) { 
        discon.show('slow'); 
        disc.val("- " + disc15.toFixed(2)); 
        tax.val("+ "+ tax7.toFixed(2)); 
        ttl.val("Naf. "+ (total+tax7).toFixed(2)); 
    } 
    else { 
        discon.hide('slow'); 
        tax.val("Naf. "+ tax7.toFixed(2)); 
        ttl.val("Naf. "+ (total+tax7).toFixed(2)); 
    } 
    } 
    
        $('#from').datepicker({ 
        dateFormat: 'D dd-mm-yy', 
        minDate: '+1D', 
        maxDate: '+2Y', 
        changeMonth: true, 
        numberOfMonths: 1, 
        onClose: function(selectedDate) { 
        $("#to").datepicker("option", "minDate", selectedDate); 
        } 
    }); 
    $('#to').datepicker({ 
        dateFormat: 'D dd-mm-yy', 
        minDate: '+1D', 
        maxDate: '+2Y', 
        changeMonth: true, 
        numberOfMonths: 1, 
        onClose: function(selectedDate) { 
        $('#from').datepicker("option", "maxDate", selectedDate); 
        } 
    }); 
    
    $('#from,#to').change(selector) 
    
    
    }); 
    
    }); 
    
+0

恭喜你在这里发表的第一篇文章。如果我的帮助程序可以帮助您,请将其标记为已回答。祝你好运! – ParPar

回答

0

1.

$("#box").chained("#box2").change(function() {
$("#box, #box2").change(function() {

2. 您的代码看起来不错,但因为你没有的元素很多情况下,我建议你放弃将每个选择器定义为一个变量。

+0

也许他正在使用像PhpStorm/WebStorm这样的IDE,它可以在你多次使用相同的jQuery选择器时发出警告。 – Barmar

+0

谢谢!我会遵循你的建议,并“选择”我的选择器。 我需要.chained我的表单中的前两个选项,所以删除,不会帮助我 – Bastiaan

+0

@ParPar:它的工作!谢谢! – Bastiaan