jquery在一个输入字段中添加数字

时间:2014-07-29 04:02:24

标签: forms add

我找到了将多个输入字段的数量加在一起并输出结果的方法。但是,我试图找到一种方法在一个字段中添加数字,如果可能的话。我基本上希望它能够像excel单元格那样工作,并在每个单元格之间使用+来加起来。

因此,当用户输入= 125 + 11 + 110时,它会自动将这些数字添加到并显示该框旁边的总数。

5 个答案:

答案 0 :(得分:2)

您可以拆分字符串:

var expression = "125+11+110";
var operands = expression.split("+");
var sum = 0;

for (var i = 0; i < operands.length; i++) {
    sum += parseInt(operands[i]); // use parseFloat if you use decimals as well.
}

但是上面的例子不会在单个文本框中知道多种类型的操作。例如,100+76-45会给您错误的答案。

您也可以使用eval,但要知道it can be harmful if you used it in a wrong way

var expression = "125+11+110";
var sum = eval(expression);

如果您使用eval:

  • 将用户提交的字符串存储在数据库中,无需卫生设施。
  • 将用户提交给浏览器的字符串作为JavaScript发回。
  • 为了安全,只需 甚至根本不将用户的字符串发送到服务器

答案 1 :(得分:0)

您应该使用eval。像这样......

var input = "125+11+110";
var answer = eval(input);

http://www.w3schools.com/jsref/jsref_eval.asp

答案 2 :(得分:0)

这是脏方法。它在加号之间拆分输入,并将数组中的值相加:

var userinput = "125+11+110";
var userinputarray = userinput.split("+");
var totalamount = 0;
$(userinputarray).each(function(key,value){
    totalamount += parseFloat(value);
})

它不处理减法。但是你可以改为进行正则表达式匹配:

var userinput = "125+11+110";
var userinputarray = userinput.match(/(\+|\-){0,1}[0-9.]{1,}/g);
var totalamount = 0;
$(userinputarray).each(function(key,value){
    totalamount += parseFloat(value);
});

Parsefloat将删除+符号,同时仍然使用负号。

答案 3 :(得分:0)

var data = $('#inputfeildID').text();
var arr = data.split('+');

var total = 0; 

for(i=0; i < arr.length ; i ++){
  total += arr[i];
}
console.log( total );

当用户点击进入或提交时,首先获取输入字段中的值或文本&amp;然后从+中拆分它,然后添加数组元素。你将得到输入框的总值..

如果你想在用户输入时自动添加这些数字,你必须使用jQuery keyup function&amp;当用户按+时,然后将下一个数字添加到前一个

答案 4 :(得分:0)

您可以在文本框中放置一个keyup侦听器。然后在侦听器触发的代码中,如果&#34; myinput&#34;是输入字段的ID:

var exp = document.getElementById('myinput').value;
var result = eval(exp);

&#34;导致&#34;将是表达式的值。您还应该检查&#34; exp&#34;看到它是一个有效的条目,因为用户可以将任何类型的垃圾放入输入字段,也可能存在安全问题。