javascript
  • html
  • 2017-04-07 53 views 1 likes 
    1

    我想在输入改变它的值时执行一个Javascript函数。当其他输入被点击时,输入改变它的值(这些输入增加或减少值)。如何在输入更改时执行javascript函数?

    这里是我的html代码:

    <input type='button' value='–' class='qtyminus' field='quantity{{$accessory- 
    >id}}' style="font-weight: bold;" /> 
    
    <input id='accessory{{$i}}' onchange="updateNoAccessories({{$i}})" 
    type='text' name='quantity{{$accessory->id}}' value='1' 
    class='qty' style="margin-bottom: 0px !important"/> 
    
    <input type='button' value='+' class='qtyplus' field='quantity{{$accessory- 
        >id}}' style="font-weight: bold;" /> 
    

    JS功能:

    function updateNoAccessories(i) { 
        var no = document.getElementById("accessory"+i).value; 
        document.getElementById("acc"+i).innerHTML = no + ' x'; 
    } 
    

    我想从JS功能更新内容:

    <span>You chose:<i><b id="acc0"></b> items,</i><i><b id="acc1"></b> 
    things,</i><i><b id="acc2"></b>stuff</i></span> 
    
    +0

    的可能的复制(http://stackoverflow.com/questions/ 6458840/on-input-change-event) –

    +0

    这对我来说不起作用。 –

    回答

    1

    你的按钮+和 - 没有链接到onchange的输入,所以你的事件永远不会被触发(也许你没有粘贴你的代码的那部分),你可以使用ininput而不是onchange。

    您可以修复的东西,如:

    <input type='button' value='–' class='qtyminus' field='quantity{{$accessory- 
    >id}}' style="font-weight: bold;" onclick='updateValue(-1,$i)'/> 
    
    <input id='accessory{{$i}}' oninput="updateNoAccessories({{$i}})" 
    type='text' name='quantity{{$accessory->id}}' value='1' 
    class='qty' style="margin-bottom: 0px !important"/> 
    
    <input type='button' value='+' class='qtyplus' field='quantity{{$accessory- 
        >id}}' style="font-weight: bold;" onclick='updateValue(+1,$i)'/> 
    

    和JS:?在输入变化事件]

    function updateValue(i,id) { 
        var no = document.getElementById("accessory"+id).value; 
        no = no + i; 
        document.getElementById("acc"+id).innerHTML = no; 
    } 
    
    function updateNoAccessories(i) { 
        var no = document.getElementById("accessory"+i).value; 
        document.getElementById("acc"+i).innerHTML = no + ' x'; 
    } 
    
    +0

    这似乎有效,但它将值增加2,而不是1,我不能找出原因。一个小chage在updateValue函数中是(“acc”+ id),但是现在当我点击输入“+”时增加了2 –

    +0

    解决了它,从updateValue函数中删除了第3行,因为我的类已经增加了值。非常感谢! –

    +0

    也许是因为updateNoAccessories是由updateValue触发的。谢谢我通过编辑更新了我的答案 –

    0

    只需更换您的onchange事件oninput它将更新输入值更改元素的值。

    所以,你的代码将是这样的:

    <input type='button' value='–' class='qtyminus' field='quantity{{$accessory- 
    >id}}' style="font-weight: bold;" /> 
    
    <input id='accessory{{$i}}' oninput="updateNoAccessories({{$i}})" 
    type='text' name='quantity{{$accessory->id}}' value='1' 
    class='qty' style="margin-bottom: 0px !important"/> 
    
    <input type='button' value='+' class='qtyplus' field='quantity{{$accessory- 
        >id}}' style="font-weight: bold;" /> 
    

    这应该可以正常工作!

    +0

    没有,但是谢谢你的回答 –

    相关问题