Javascript - wczytanie do input , a nie w div wyświtlanie

0

Witam,

mam pytanie dotyczące JS. Wylicza mi dane, ale wstawia mi je do DIV, a założenie jest aby było w INPUT wczytane.
Nie wiem jak poprawić, proszę o informacje..

kod html:

<tr>	
  <td><input type='text' id="left"   name='left'   ></td>
</tr>
<tr>	
  <td><input type='text' id='right'  name='right'  ></td>
</tr>
<tr>
  <td><div id = "test" > </div>  </td>
</tr>

kod JS:

<script>
window.onload = function () {
 var left = document.getElementById('left');
 var right = document.getElementById('right');
 var test = document.getElementById("test");
  
 function check(a, b, elem) {
       
   var txt = '';
    if (a === 0 || b === 0) {
       txt = "Nie wprowadzona wartość"
    } 
    else {
       txt =( a * parseFloat(b/100)) +a;
    }
        test.innerHTML = number_format(txt, 2, ",", " ");
 }

  left.onkeyup = calc;
  right.onkeyup = calc;

  function calc() {
    var a = parseFloat(left.value);        
    var b = parseFloat(right.value);
    check(a,b, this);
 }
}


 
function number_format (number, decimals, dec_point, thousands_sep) {
    // http://phpjs.org/functions/number_format
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}
</script>

Przelicza i wyświetla tylko nie w input ..?

<input id="test"> </input >
1

zapewne używasz innerHTML na inpucie, a powinieneś value,

0

INPUT mam tylko taki:

 <input type='text' id='result'	name='result' disabled>

Dodanie / modyfikacja kodu :
Z:

 result.innerHTML = number_format(txt, 2, ",", " ");

na:

 result.value= number_format(txt, 2, ",", " ");

nie pomogła :(

lub
Z:

 var result = document.getElementById("result");

na:

 var result = document.getElementById("result").value;

nie wiem za bardzo gdzie mam zmodyfikować

0

http://jsbin.com/IYETizo/1/

No chyba coś ściemniasz

0

wielkie dziękuje , od rana nad tym siedzę

Mam jeszcze jedno pytanko jak pobrać dane z tych INPUT tylko w takiej postaci np

11 555.99
11 555,99

nie chce ich tak czytać ? :(

Tylko w takiej postaci chce je pobierać: 11555.99

0
function fixFloat(val, nonEmpty, asFloat) {
    val = val+'';
    val = parseFloat(val.replace(',', '.').replace(' ', '')).toFixed(2);
    if (isNaN(val)) { val = nonEmpty ? (asFloat?0:'0.00') : ''; }
    return asFloat?parseFloat(val):val;
}

val -> wartość
nonEmpty -> w przypadku, gdy wartość nie przypomina liczby (np. "a") wymusza zwracanie 0 (normalnie zwróci pusty string)
asFloat -> zwróci wartość jako typ float (normalnie zwraca stringi)

gdy nonEmpty jest false, a asFloat jest true, a podamy niepoprawną liczbę to dostaniemy NaN (not-a-number).

Najlepiej używać w formie fixFloat(wartosc, true, true).

Funkcja używana przeze mnie na codzień, napisana kiedyśtam.

0

ehh , coś albo mój mózg już nie myśli, albo coś nie tak robię

http://jsbin.com/IYETizo/3/edit

0

jeszcze mozna coś takiego zastosować

 floatval(str_replace(',', '.', str_replace(' ', '',$zmiena_do_konwersji )));
0

pomocny był przykład ze strony www:

http://www.mredkj.com/javascript/numberFormatPage2.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1