简体   繁体   English

更改第一个输入jQuery的值

[英]Change value of first input jquery

I am using some spinner with font-awesome to style input type number with bootstrap but i have problem with event value, if I have more input type number on page it change value for all of them, but i need only for that one that is edited 我正在使用一些带有字体的微调器,以引导的样式设置输入类型号,但是事件值有问题,如果我在页面上有更多输入类型号,它会更改所有输入值,但是我只需要那是编辑

Here is where i have problem 这是我有问题的地方

(function ($) {
  $('.spinner .btn:first-of-type').on('click', function() {
    $('.spinner input').val( parseInt($('.spinner input').val(), 10) + 1);
  });
  $('.spinner .btn:last-of-type').on('click', function() {
    $('.spinner input').val( parseInt($('.spinner input').val(), 10) - 1);
  });
})(jQuery);

And here you can look full example 在这里您可以看到完整的示例

http://codepen.io/anon/pen/YGqLbv http://codepen.io/anon/pen/YGqLbv

You need to use the this keyword in the click event handlers to reference the button which was clicked. 您需要在click事件处理程序中使用this关键字来引用被单击的按钮。 From that element you can traverse the DOM to find the related input. 从该元素中,您可以遍历DOM来找到相关的输入。 Try this: 尝试这个:

 $('.spinner .btn:first-of-type').on('click', function() { $(this).closest('.spinner').find('input').val(function(i, v) { return parseInt(v, 10) + 1; }); }); $('.spinner .btn:last-of-type').on('click', function() { $(this).closest('.spinner').find('input').val(function(i, v) { return parseInt(v, 10) - 1; }); }); 
 .spinner { width: 100%; } .spinner input { text-align: left; } .input-group-btn-vertical { position: relative; white-space: nowrap; width: 1%; vertical-align: middle; display: table-cell; } .input-group-btn-vertical > .btn { display: block; float: none; width: 100%; max-width: 100%; padding: 8px; margin-left: -1px; position: relative; border-radius: 0; } .input-group-btn-vertical > .btn:first-child { border-top-right-radius: 4px; } .input-group-btn-vertical > .btn:last-child { margin-top: -2px; border-bottom-right-radius: 4px; } .input-group-btn-vertical i { position: absolute; top: 0; left: 4px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <div class="container"> <div class="page-header"> <h1>Bootstrap 3 input-spinner</h1> </div> <div class="input-group spinner"> <input type="text" class="form-control" value="42"> <div class="input-group-btn-vertical"> <button class="btn btn-default" type="button"><i class="fa fa-caret-up"></i></button> <button class="btn btn-default" type="button"><i class="fa fa-caret-down"></i></button> </div> </div> <div class="input-group spinner"> <input type="text" class="form-control" value="42"> <div class="input-group-btn-vertical"> <button class="btn btn-default" type="button"><i class="fa fa-caret-up"></i></button> <button class="btn btn-default" type="button"><i class="fa fa-caret-down"></i></button> </div> </div> </div> 

you can use closest() method for find closest spinner then find input 您可以使用最近的()方法来找到最接近的微调器,然后找到输入

(function ($) {
  $('.spinner .btn:first-of-type').on('click', function() {
    $closest_input= $(this).closest('.spinner').find('input');
    $closest_input.val( parseInt($closest_input.val(), 10) + 1);
  });
  $('.spinner .btn:last-of-type').on('click', function() {
    $closest_input= $(this).closest('.spinner').find('input');
    $closest_input.val( parseInt($closest_input.val(), 10) - 1);
  });
})(jQuery);

Simplyfied: Simplyfied:

(function ($) {
  $('.spinner .btn').on('click', function() {
    var down = $(this).is(':last-of-type');
    $(this).parents('.spinner').find('input').val(function(i, v) {
       return parseInt(v, 10) + 1 * (down ? -1 : 1);
    });
  });
})(jQuery);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM