【问题标题】:Jquery siblings display undefined in alertJquery兄弟姐妹在警报中显示未定义
【发布时间】:2019-01-13 17:43:16
【问题描述】:

Jquery 兄弟显示未定义 当用户在总金额字段中输入任何内容时,我有数量字段和总金额字段,然后我必须在警报中显示数量。我暂时不在乎数量,因为我必须了解为什么我的 jquery 兄弟姐妹不起作用。当我输入任何数字时,我会在警报中变得未定义。

这不是我的整个项目,这是我必须了解兄弟姐妹的项目的一部分。我将代码上传到以下链接。

例如,我有数量和总价。如果我使用 var qty_number=$("#number1").val(); 那么它将适用于唯一的单个字段。现在我添加了更多按钮 如果任何用户单击添加更多,那么它将显示数量 + 总价 + 删除按钮。用户最多可以添加 10 个字段。现在,当用户在总价中输入任何内容时,我必须显示该行的数量。

如果我的 div 不在父级之外,那么我必须使用什么方法?

你能帮我解决这个问题吗?

https://jsfiddle.net/Narendra2015/pu6qy4zr/19/

function increaseValue(n) {
  var value = parseInt(document.getElementById('number' + n).value, 10);
  value = isNaN(value) ? 0 : value;
  value++;
  document.getElementById('number' + n).value = value;
}

function decreaseValue(n) {
  var value = parseInt(document.getElementById('number' + n).value, 10);
  value = isNaN(value) ? 0 : value;
  value < 1 ? value = 1 : '';
  value--;
  document.getElementById('number' + n).value = value;
}
$(".custom").on('keyup', 'input[id^=total_p_price]', function() {

  var that = $(this); // CHANGE HERE
  var total_p_price = that.val();
  var qty_number = that.siblings("input[id^=number]").val();
  alert(qty_number);
  console.log(qty_number);
});
<div class="custom">
  <div class="plus_minus">
    <span class="value_button decrease" onclick="decreaseValue(1)" value="Decrease Value">-</span>
    <input type="number" id="number1" class="qty_number form_control" name="qty_number[]" value="0" class="form_control" />
    <span class="value_button increase" onclick="increaseValue(1)" value="Increase Value">+</span>
  </div>
  <input type="text" class="form_control" name="total_p_price[]" id="total_p_price" />
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    数量输入与总输入不在同一个div中(它们没有相同的父(容器),所以就像它们不是兄弟姐妹一样,如果将两个输入放在同一个div中,数量将显示在警报。 这里是代码:

    <div class="custom">
        <div class="plus_minus">
            <span class="value_button decrease" onclick="decreaseValue(1)" value="Decrease Value">-</span>
            <input type="number" id="number1" class="qty_number form_control"  name="qty_number[]" value="0" class="form_control"/>
            <span class="value_button increase"  onclick="increaseValue(1)" value="Increase Value">+</span>
    
    <input type="text" class="form_control" name="total_p_price[]" id="total_p_price" />
     </div>
    </div>
    

    这里是了解 jquery 兄弟的链接:https://api.jquery.com/siblings/

    【讨论】:

    • @cblnfo009,感谢您的回复。这是很好的信息,但如果我的总输入超出了 div,那么我必须在 Jquery 中使用哪种方法?
    • 获取输入数量值的方法有很多种,因为您在这里使用 jquery 并且您的输入有一个 id,最简单的方法是使用 id 查找值,如下所示:var qty_number=$ ("#number1").val();
    • @cblnfo009,是的,没错,我可以使用 var qty_number=$("#number1").val();并获取警报中的值。为什么我使用它,因为我必须动态添加数量输入和总金额字段。这样 var qty_number=that.siblings("input[id^=number]").val();将捕获最近的 qyantity 值。
    【解决方案2】:

    确认我的评论: 使用 id 获取显示数量值:

    function increaseValue(n) {
      var value = parseInt(document.getElementById('number' + n).value, 10);
      value = isNaN(value) ? 0 : value;
      value++;
      document.getElementById('number' + n).value = value;
    }
    
    function decreaseValue(n) {
      var value = parseInt(document.getElementById('number' + n).value, 10);
      value = isNaN(value) ? 0 : value;
      value < 1 ? value = 1 : '';
      value--;
      document.getElementById('number' + n).value = value;
    }
    $(".custom").on('keyup', 'input[id^=total_p_price]', function() {
    
      var that = $(this); // CHANGE HERE
      var total_p_price = that.val();
      var qty_number=$("#number1").val();
      alert(qty_number);
      console.log(qty_number);
    });
    <div class="custom">
      <div class="plus_minus">
        <span class="value_button decrease" onclick="decreaseValue(1)" value="Decrease Value">-</span>
        <input type="number" id="number1" class="qty_number form_control" name="qty_number[]" value="0" class="form_control" />
        <span class="value_button increase" onclick="increaseValue(1)" value="Increase Value">+</span>
      </div>
      <input type="text" class="form_control" name="total_p_price[]" id="total_p_price" />
    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    【讨论】:

    • 这不适用于动态字段。它只会捕获第一个数量。这就是我在问题中提到这不是一个完整的项目这是项目的一部分的原因。
    • 您是动态创建字段吗?
    • 如果是这样,您可能需要使用 jquery : .children() 。我不确定你到底在做什么。
    • @cblnfo009,如果你没有理解我的问题,我很抱歉。可能是我没有更好地解释它。让我们详细解释一下:我有数量和总价。您的回答将适用于唯一的单一领域。现在我添加了更多按钮 如果任何用户单击添加更多,那么它将显示数量 + 总价 + 删除按钮。用户最多可以添加 10 个字段。现在,当用户在总价中输入任何内容时,我必须显示该行的数量。
    • 你有示例代码吗?所以我可以帮助你
    猜你喜欢
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2019-05-06
    • 2012-12-05
    • 1970-01-01
    相关资源
    最近更新 更多