如何使用 keyup 功能进行多种形式的输入

Posted

技术标签:

【中文标题】如何使用 keyup 功能进行多种形式的输入【英文标题】:How to use keyup function for multiple forms input 【发布时间】:2021-11-17 20:39:32 【问题描述】:

我的页面上有多个具有相同输入的表单。 我想从输入中获得一些价值。 现在我的代码只适用于第一个表单输入。

 $("#quantity").each(function () 
            var $final_price = $('#final_price');
            $("#quantity").on('keyup', function (e) 
                var quantity = parseFloat($(this).val());
                var product_price = parseFloat($("input[name='product_price']").val(), 10);
                $final_price.val(quantity * product_price);
            );
        );

编辑,工作代码:

    $(".ilosc").on('keyup', function (e) 
        var quantity = parseFloat($(this).val());
        var product_price = parseFloat($("input[name='product_price']").val(), 2);
        var final_price_input= $(this).closest("form").find(".final-price-rental-value");
        var final_price_value = (quantity * product_price).toFixed(2);
        var final_price_input_value = final_price_input.val(final_price_value);
    );

【问题讨论】:

Id 属性必须是唯一的。如果重复,则只有第一个元素会被 DOM 记住。尝试唯一的 ID 或类属性。 几乎可以正常工作。现在,当我在数量输入中更改第二种形式的值时,它会以第一种形式的最终价格乘以最终价格 同一问题$('#final_price') 只能引用单个输入。您需要使用相对 DOM 导航来找到正确的输入;没有您的 html,我们只能推测:$(this).closest("form").find(".final_price").val(... 这就是重点 【参考方案1】:

你的 HTML 应该是

<input type="number" name="quantity" class="quantity" required="required">

你的 javascript 应该是

$(".quantity").on('keyup', function (e) 
    var quantity = parseFloat($(this).val());
    var product_price = parseFloat($("input[name='product_price']").val(), 10);
    $final_price.val(quantity * product_price);
);

【讨论】:

几乎可以正常工作。现在,当我在数量输入中更改第二种形式的值时,它会以第一种形式的最终价格乘以最终价格 您需要保留其第一或第二或第三的指数,并根据该最终价格计算【参考方案2】:

您的代码仅适用于第一个表单,因为您的目标是一个 id,即#quantity,而您是can only have one id per page。

你需要做的是使用类,例如:

$('.quantity').each(function(index, value) 
  var $input = $(value);
  console.log($input.val());
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form>
  <input type="text" class="quantity" value="232" />
</form>

<form>
  <input type="text" class="quantity" value="765" />
</form>

<form>
  <input type="text" class="quantity" value="987" />
</form>

【讨论】:

谢谢,工作正常。

以上是关于如何使用 keyup 功能进行多种形式的输入的主要内容,如果未能解决你的问题,请参考以下文章

如何使 html 文本输入只读但能够使用脚本进行更新?

jQuery keyup或点击没有立即响应,为什么?

从 keyup 事件中获取角色

JQuery:Keyup,如何防止箭头(向上和向下)的默认行为并输入键?

如何检查是不是在 KeyUp 事件的文本框中输入了数字或字母 [重复]

从输入中删除字符时,如何防止 keyup 事件触发两次?