Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 Can';t获取最近的上一个td输入值_Javascript_Jquery_Html - Fatal编程技术网

Javascript Can';t获取最近的上一个td输入值

Javascript Can';t获取最近的上一个td输入值,javascript,jquery,html,Javascript,Jquery,Html,我需要你的帮助 我有,我想要的是将两个td的值相乘,结果进入下一个td $(document).ready(function(){ $( "input[id^='unitval']" ).keyup(function() { var input_value = parseFloat($(this).val()); var Cant = $("#item_Cant").text(); var totval = (input_value * Cant); if (!isNaN(inp

我需要你的帮助

我有,我想要的是将两个td的值相乘,结果进入下一个td

$(document).ready(function(){
$( "input[id^='unitval']" ).keyup(function() { 

var input_value = parseFloat($(this).val());
var Cant = $("#item_Cant").text(); 
var totval = (input_value * Cant);

    if (!isNaN(input_value)) { // the input is a number
    //$("#totval1").val(totval); // update second field
         $(this).closest('td').next().find('input').val(totval);

    } else { // the input wasn't a number
        $("#totval1").val("not a number?"); // show an error mesage
    }
});
});
但只适用于第一行,因为第二行仍然与第一行的td相乘,而不是实际的td

我试图改变:

 var Cant = $("#item_Cant").text(); 

但不起作用,我不知道为什么,即使是第一排

但在这一行中,我需要正确的Jquery来获取同一tr中的最后一个td输入值

我试了很多台词,但是没有成功,希望你能理解我


谢谢您的帮助。

每次计算时,您总是参考
项目ID。您需要找到与当前输入字段相关的quantity元素

以下是一种适用于您当前结构的方法:

$(document).ready(function () {
    $("input[id^='unitval']").keyup(function () {
        var input_value = parseFloat($(this).val());
        var Cant = $(this).closest('tr').find('[id^="item_Cant"]').text();
        var totval = (input_value * Cant);

        if (!isNaN(input_value)) { // the input is a number
            //$("#totval1").val(totval); // update second field
            $(this).closest('td').next().find('input').val(totval);

        } else { // the input wasn't a number
            $("#totval1").val("not a number?"); // show an error mesage
        }
    });
});

这里有一个难题:

一个页面上不能有多个相同的ID

改用类:

$(document).ready(function(){
$( "input.unitval" ).keyup(function() { 

var input_value = parseFloat($(this).val());
var Cant = $(this).parent().prev().text(); 
var totval = (input_value * Cant);

    if (!isNaN(input_value)) { // the input is a number
    //$("#totval1").val(totval); // update second field
         $(this).parent().parent().find('.totval').val(totval);

    } else { // the input wasn't a number
        $("#totval1").val("not a number?"); // show an error mesage
    }
});
});

<table width="500" border="1">
    <tr>
        <td>Quantity</td>
        <td>VAL1</td>
        <td>RESULT Quantity*VAL1</td>
        <td>VAL2</td>
        <td>RESULT Quantity*VAL2</td>
    </tr>
    <tr>
        <td>5</td>
        <td><input class="unitval" type="text"/></td>
        <td><input readonly class="totval"  type="text"/></td>
        <td><input class="unitval" type="text"/></td>
        <td><input readonly class="totval"  type="text"/></td>
    </tr>
    <tr>
        <td>4</td>
        <td><input class="unitval" type="text"/></td>
        <td><input readonly class="totval"  type="text"/></td>
        <td><input class="unitval" type="text"/></td>
        <td><input readonly class="totval"  type="text"/></td>
    </tr>

</table>
$(文档).ready(函数(){
$(“input.unitval”).keyup(函数(){
var input_value=parseFloat($(this.val());
var Cant=$(this.parent().prev().text();
var totval=(输入值*超高);
如果(!isNaN(输入值)){//,则输入是一个数字
//$(“#totval1”).val(totval);//更新第二个字段
$(this.parent().parent().find('.totval').val(totval);
}否则{//输入不是数字
$(“#totval1”).val(“不是数字?”);//显示错误表
}
});
});
量
瓦尔1
结果数量*1
瓦尔2
结果数量*2
5.
4.

我先开始,ID是唯一的!我将尝试更改相同的ID,因为这是一个包含php和mysql的复杂表,对此表示抱歉。@JaredFarrish您不能假设每个人都有权更改HTML。改变现有结构是不可行的,原因有很多。这是提供给JS开发人员的解决方案。@JaredFarrish请实际阅读代码并意识到没有重复的ID,是的,在这个特定场景中需要一个属性选择器。还有,你的小提琴坏了。伙计们,我没法把结果和栏底的a求和,你能帮我吗?谢谢你的帮助。
$(document).ready(function(){
$( "input.unitval" ).keyup(function() { 

var input_value = parseFloat($(this).val());
var Cant = $(this).parent().prev().text(); 
var totval = (input_value * Cant);

    if (!isNaN(input_value)) { // the input is a number
    //$("#totval1").val(totval); // update second field
         $(this).parent().parent().find('.totval').val(totval);

    } else { // the input wasn't a number
        $("#totval1").val("not a number?"); // show an error mesage
    }
});
});

<table width="500" border="1">
    <tr>
        <td>Quantity</td>
        <td>VAL1</td>
        <td>RESULT Quantity*VAL1</td>
        <td>VAL2</td>
        <td>RESULT Quantity*VAL2</td>
    </tr>
    <tr>
        <td>5</td>
        <td><input class="unitval" type="text"/></td>
        <td><input readonly class="totval"  type="text"/></td>
        <td><input class="unitval" type="text"/></td>
        <td><input readonly class="totval"  type="text"/></td>
    </tr>
    <tr>
        <td>4</td>
        <td><input class="unitval" type="text"/></td>
        <td><input readonly class="totval"  type="text"/></td>
        <td><input class="unitval" type="text"/></td>
        <td><input readonly class="totval"  type="text"/></td>
    </tr>

</table>