从textarea操作值时出错

时间:2014-01-25 10:53:54

标签: javascript jquery html

我是来自马其顿的Bobi,我偶然发现了一个丑陋的问题 我的JavaScript / jQuery代码。

我想在我的textarea中输入一些值,然后根据具体的公式 需要计算这些值,结果需要提醒。

这是我的代码......

//First this is my formula
function calc(data) { 
  ret = []; 

for(var i = 0; i < data.length; i++) { 
ret[i] = (3.5 + data[i] + 0.5 * (data[i] - 3));
 } 
   return ret; 
 }

//Now, taking values from the text area using valHooks
$.valHooks.textarea = {
get: function(elem) {
return elem.value.replace( /\r?\n/g, "\r\n" );
  }
};

$('button').click(function() {

//in this step the values are successfully taken from the textarea 
    var  sample = {};
sample.data = $('textarea').val();
    //alert(sample.data);  <-- this works fine


var result = {};
    result.data = calc(sample.data);   //but here seems to be the problem
    alert(result.data);                //the alert shows some gibberish values

例如,如果我输入这些值1.6,3.9,3.3,4.0,2.5,2.8 ...... 警报需要显示这些计算值:4.4,7.85,6.95,9.0,5.75,6.2 ......

这里也是jsfiddle http://jsfiddle.net/Avramoski/skqG4/

我知道我错过了一些小事,但天知道它是什么...... 请帮忙! :(

2 个答案:

答案 0 :(得分:0)

点击FIDDLE链接到演示结果。

您必须检查parseFloat号是否有效。

        $(function () {


function calc(data) { 
      ret = []; 
    var res=data.split(',');
 for(var i = 0; i < res.length; i++) { 
     var parseNumber=parseFloat(res[i]);
    ret[i] =  (3.5 + parseNumber + 0.5 * (parseNumber - 3)).toFixed(2);
  } 
  return ret; 
}

//Taking values from the text area using valHooks
$.valHooks.textarea = {
    get: function(elem) {
    return elem.value.replace( /\r?\n/g, "\r\n" );
}
};

$('button').click(function() {

    var result = {};
        result.data = calc(sample.data);   
        alert(result.data); 

});
});

答案 1 :(得分:0)

按照我的说法进行以下三项更改..并享受编码.. :)

 function calc(data) { 
     ret = []; 
    for(var i = 0; i < data.length; i++) { 
     data[i] = parseFloat(data[i]); // here u want to parse ur string to float
    ret[i] = (3.5 + data[i] + 0.5 * (data[i] - 3));
    ret[i] = Math.round(ret[i] * 100) / 100; // this code for get rounded answer like exactly u needed 
     } 
       return ret; 
     }

$.valHooks.textarea = {
get: function(elem) {
return elem.value.replace( /\r?\n/g, "\r\n" );
  }
};

$('button').click(function() {

    var  sample = {};
sample.data = $('textarea').val();
sample.data = sample.data.split(","); //textarea value transferring to array
    //alert(sample.data);


var result = {};
    result.data = calc(sample.data);   
    alert(result.data);   
} // and dont miss this curly bracket :D