基于单击按钮增加隐藏输入的值

时间:2010-09-17 20:17:36

标签: javascript jquery

我有一个隐藏的输入#start这个值用于显示一系列返回的数据(它是索引的起点)每次单击#next我需要增加它的值。

$("#next").click(function() {
  $("#start").val() + 80;
)};

这是对的吗?或者,还有更好的方法? 全部!

5 个答案:

答案 0 :(得分:6)

试试这个(demo):

$("#next").click(function() {
  $("#start").val(function(i,v){
   return parseInt(v,10) + 80 || 0;
  });
});

答案 1 :(得分:3)

您需要将值转换为整数,向其中添加任意数字,然后将其保存回来:

$("#next").click(function(){
      var startElement = $("#start");
      var value = parseInt(startElement.val(), 10);
      startElement.val(value + 80);    
});

工作样本:http://jsfiddle.net/QZgAf/

答案 2 :(得分:1)

您所做的只是检索val并向其添加80,您实际上并未将其设置回元素上的值。为此,请尝试以下方法:

$("#next").click(function() {
  $("#start").val( parseInt($("#start).val()) + 80 );
)};

这有点低效,因为你将选择#start两次。相反,我会将#start选项缓存在一个变量中:

$("#next").click(function() {
  var startElement = $("#start");
  startElement.val( parseInt(startElement.val()) + 80 );
)};

答案 3 :(得分:1)

这是另一种方式。它直接访问value属性并使用~~来避免可能的八进制或NaN问题。

$("#next").click(function() {
     var start = document.getElementById("start");
     start.value = ~~start.value + 80;
});

或者更好的是,如果可以多次点击该按钮,则只运行一次#start选择器。

   // cache "start" outside the handler
var start = document.getElementById("start");

$("#next").click(function() {
     start.value = ~~start.value + 80;
});

答案 4 :(得分:0)

使用一点封闭模式:

$("#next").click(function cli() {
    var v = 0;

    return function() {
        $("#start").html(v += 80);
    };
}());