Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用.data()设置变量_Javascript_Jquery_Selector - Fatal编程技术网

Javascript 使用.data()设置变量

Javascript 使用.data()设置变量,javascript,jquery,selector,Javascript,Jquery,Selector,我正在尝试使用.data在表单中设置变量,但无法使其工作,因为我无法获得变量费用的任何输出,我只看到一个空白。 理想情况下,用户会选择一种类型,输入一个片段,然后选择25%或50%。每个百分比都与所选hp或lp类型的不同数据条目相关联。然后,所选的数据类型将插入数据选择器,以提取一个费用值。我可以让所有其他变量显示一个量,除了这个,所以我想这一定是我出错的地方。我不确定我做错了什么,所以任何意见都将不胜感激!谢谢 这是JSFIDLE- HTML: 你可能需要调整一些数学,但我认为这对你来说是可行

我正在尝试使用.data在表单中设置变量,但无法使其工作,因为我无法获得变量费用的任何输出,我只看到一个空白。 理想情况下,用户会选择一种类型,输入一个片段,然后选择25%或50%。每个百分比都与所选hp或lp类型的不同数据条目相关联。然后,所选的数据类型将插入数据选择器,以提取一个费用值。我可以让所有其他变量显示一个量,除了这个,所以我想这一定是我出错的地方。我不确定我做错了什么,所以任何意见都将不胜感激!谢谢

这是JSFIDLE-

HTML:


你可能需要调整一些数学,但我认为这对你来说是可行的

$(document.body).on('keypress keydown keyup change', '[class="pSelectP"] , [class="pSelectQ"]', function () {
            var service = $(this).attr('id').split("_")[0],
                footage = parseFloat($("#" + service + "_F").val());
                pricetype = $("#" + service + "_P option:selected").val();
                percentage = parseFloat($('#pPost_D option:selected').data()[pricetype]);
                fee = percentage * footage;

            if (isNaN(footage)) {
                $("#" + service + "_A").val("Please enter Quantity");
            }

            if (!isNaN(footage) && (!isNaN(Number(fee)))) {
                $("#" + service + "_A").val(Math.ceil(fee));
                $("#" + service + "_C").val(fee);
            }
    });

缺少名为manualOverrideNo的元素。另外,parseFloat不需要2个参数哦。当我制作JSFIDLE时,我忘了取出manualOverrideNo,但这不是问题所在。谢谢你指出这一点。我的印象是parseFloat应该和第二个参数一起使用来设置要使用的基数?这就是我被告知的,也是我一直使用它的方式,尽管我已经很久没有这么做了。parseInt可以接受第二个参数。谢谢我甚至没想过要通过那条路线。我会检查一下,然后再给你回复。再次感谢!我尝试了代码,但这将是实际百分比的倍数,而不是价格与百分比挂钩。列出的百分比几乎与实际价格无关。我知道,这是一个奇怪的设置,但他们喜欢这样。我需要将画面乘以低价lp,在本例中为2或高价hp,在本例中为5,与每项服务相关。我可以在每个价格中硬编码,但是大约有100个,每个季度价格都会变化,所以我试着更聪明地工作,而不是更努力地工作。但是谢谢。我已经更新了代码,它将从pPost_D select中提取数据值。看看这是否更适合你的需要。奇怪的是$'select option:selected'。data'data-foo'不拉任何东西。
$(document.body).on('keypress keydown keyup change', '[class="pSelectP"] , [class="pSelectQ"]', function () {
    if ($('#manualOverrideNo').prop('checked')) {
        var parts = $(this).attr('id').split("_"),
            service = parts[0],

            footage = parseFloat($("#" + service + "_F").val(),  
                                 10),
            percentage = $("#" + service + "_P").val(),
            fee = parseFloat($("#" + service + "_D").data("'" + 
                  percentage + "'"), 10),
            cost = $("#" + service + "_C"),


            amount = '',
            finalAmount = '';


        if (isNaN(footage)) {
            total.val("Please enter Quantity");
        }

        if (!isNaN(footage) && (!isNaN(Number(fee)))) {
            amount = Math.ceil(footage * fee);
            total.val(amount);
            cost.val(fee);
        }


    }

});
$(document.body).on('keypress keydown keyup change', '[class="pSelectP"] , [class="pSelectQ"]', function () {
            var service = $(this).attr('id').split("_")[0],
                footage = parseFloat($("#" + service + "_F").val());
                pricetype = $("#" + service + "_P option:selected").val();
                percentage = parseFloat($('#pPost_D option:selected').data()[pricetype]);
                fee = percentage * footage;

            if (isNaN(footage)) {
                $("#" + service + "_A").val("Please enter Quantity");
            }

            if (!isNaN(footage) && (!isNaN(Number(fee)))) {
                $("#" + service + "_A").val(Math.ceil(fee));
                $("#" + service + "_C").val(fee);
            }
    });