Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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 jQuery中的动态乘法_Javascript_Html_Jquery_Multiplication - Fatal编程技术网

Javascript jQuery中的动态乘法

Javascript jQuery中的动态乘法,javascript,html,jquery,multiplication,Javascript,Html,Jquery,Multiplication,我试图在jquery中创建一个乘法函数,它可以帮助更改基于默认值的输出 例如,如果我键入input#main input值,那么它将更改所有输入值base-own他的default value*input#main input,如果值=='NaN'它将执行dirent函数 请帮助我如何在jQuery中创建此函数 $(document).on('keyup','input#mainport',function()){ thisParentQtyValueBox=$(this.val(); dau

我试图在jquery中创建一个乘法函数,它可以帮助更改基于默认值的输出

例如,如果我键入
input#main input
值,那么它将更改所有输入值base-own他的
default value*input#main input
,如果
值=='NaN'
它将执行dirent函数

请帮助我如何在jQuery中创建此函数

$(document).on('keyup','input#mainport',function()){
thisParentQtyValueBox=$(this.val();
daughtersBoxValueAttr=$(“input.input\uu bom”).attr(“inputid”);
daughtersBoxValue=$(“输入#daughterInput"+daughtersBoxValueAttr).val();
$(“input#daughterInput”+daughtersBoxValueAttr).val(此ParentQTyValueBox*daughtersBoxValue);
if($(($(输入#子项输入#子项输入#“+daughtersBoxValueAttr)=='Nan'){
$(“input#daughterInput"+daughtersBoxValueAttr).val('3'*daughtersBoxValue)
}
});
//如果









您必须将默认值存储在数据属性中,这样它就不会按结果值倍增,而是按默认值倍增。对于动态乘法,您可以使用jquery
each
。检查下面的代码

$(文档).on('input','input#mainport',function(){
thisParentQtyValueBox=parseInt($(this.val());
if(Number.isNaN(thisParentQtyValueBox)){
thisParentQtyValueBox=3;
}
$('.input_uBOM')。每个(函数(){
$(this.val)(thisParentQtyValueBox*$(this.data('value'));
});
});









如果我理解正确,当输入不是一个数字时,您希望像输入是3一样

代码中的一些问题:

  • $(“input.input\uu bom”).attr(“inputid”)
    总是计算为1,因为只使用第一个匹配元素。奇怪的是,使用这个属性值,然后通过其
    id
    属性再次检索该元素
  • 您需要在某个地方创建一个循环,以便访问每个“input\u bom”元素
  • ='Nan
    永远不会是真的。实际上,您应该测试主输入本身,以查看它是否表示有效数字。为此,您可以使用
    isNaN
  • 给这些元素一个惟一的id属性是个坏主意。您可以使用jQuery访问它们并处理它们。不需要这样的
    id
    属性
  • 不要使用
    keyup
    事件进行此操作,因为可以通过按键以外的其他方式进行输入(例如,使用鼠标拖动文本,或使用关联菜单进行粘贴)。改为使用
    输入
    事件
  • 没有充分的理由在
    $(文档)
    上使用事件委派。只需将侦听器直接绑定到主输入元素
  • 使用
    var
    (或
    let
    const
    )声明变量。不这样做是不好的做法(这会使变量成为全局变量)
  • 看起来5个“bom”输入元素并不是真正用于输入,而是用于输出。在这种情况下,
    占位符
    属性没有意义,最好用
    只读
    属性标记它们
$(“#主输入”).on('input',function(){
var mainInput=$(this.val();
var乘数=+mainInput;//使用一元数转换为数字+
//输入不是有效数字或为空时的默认值
if(Number.isNaN(乘数)| |!main输入){
乘数=3;
}
$('.input_uBOM')。每个(函数(){
$(this.val)(乘数*$(this.data('value'));
});
});









NaN
事件不工作编号在输入时未更改..您能告诉我测试用例吗?您输入的是哪种输入?当我在
#main input
中绑定数字时,不会更改其他所有文本框中的乘法值。要进行更改,需要单击退格键。总的来说,输出没有实时更改。您检查了上面的代码片段吗?输入更改时值更改。输入更改时数字没有更改
#main input
需要输入
backspace
我不知道您做了什么,但是如果我运行上面的代码段,每次更改主输入时,更改都会立即发生。当然,输入必须是一个数字,才能获得默认的15/30/45/60/75输出以外的任何内容。你确定你复制的代码(JavaScript和HTML)正确吗?当我在
#main input
中绑定数字时,其他所有文本框中的乘法值没有改变。要进行更改,需要单击退格键。总的来说,输出没有变化。这不是真的。请运行上面的代码段。您是在这里运行代码段还是自己的副本?哪个是你的浏览器?尽管这适用于所有现代浏览器。