2014-01-25 3 views
0

저는 마케도니아 출신 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은, 8.0, 5.75, 6.2 ...

여기

http://jsfiddle.net/Avramoski/skqG4/

은 내가 작은 뭔가를 놓친 거지 알고 jsfiddle하지만, 하나님은 그것이 무엇인지 알고 ... 은 도와주세요 ! :(

+0

음, Fiddle에서 jQuery가 누락되었습니다 (포함해야 함). '$ (function() {...'에'')''''''calc'' 함수의'data.length'가 당신이 전달한 문자열의 길이입니다. 거기에 배열을 기대합니까? ? – putvande

+0

입력 문자열을 숫자 배열로 나누는 곳은 무엇입니까? – Blender

+0

버튼에'type = "button"속성을 추가하려고 시도합니다 – Cherniv

답변

0

을 결과를 데모 및 codding .. :)

을 즐길 수
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 
+0

OMG 작동했습니다, 감사합니다 선생님!) – user3057788

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); 

}); 
}); 
+0

고마워요,이게 도움이됩니다! – user3057788

관련 문제