Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

rumus perkalian tidak jalan jika nilai harga diambil dari window

master
kenapa saat harga diambil dari window rumus perkalian tidak jalan ?

https://s17.postimg.org/j7pfakf27/test.jpg

Tanggapan

  • aq pakai ini yang master ajarin

    https://pastebin.com/ZEvszG7y
  • 1. form yg dipake di posting juga.
    2. bisa liat console nya browser ? kalo bisa, capture pesan error nya, posting.
  • error tidak ada
    ketika field "QTY" dan "HARGA" nilai / angka diketik dari keyboard, rumus perkalian itu normal jalan

    tapi jika field "harga" saya ambil dari childwindow , nilai / angka terisi otomatis / tercopy dari windowchild itu rumus tidak jalan
  • edited November 15
    langsung ta gabung 2 script elo yg di pastebin ...
    gw ndak ubah apa-apa. cuma gw gabung doang.
    jalan tuh, bisa ... ndak ada masalah.
    <script>
    var thoudelim = ",";
    var decdelim = ".";
    var curr = " ";
    var d=document;

    function haltnondigit(e) {
    var allowkey=Array(48,49,50,51,52,53,54,55,56,57,8,9,188,190,45,46,13,33,34,35,36,37,38,39,40,112,113,114,115,116,117,118,119,120,121,123);
    if(allowkey.indexOf(e.keyCode)==-1) return false;
    return true;
    }
    function format(s,r) {
    s=Math.round(s*Math.pow(10,r))/Math.pow(10,r);
    s=String(s);s=s.split(".");var l=s[0].length;var t="";var c=0;
    while(l>0){t=s[0][l-1]+(c%3==0&&c!=0?thoudelim:"")+t;l--;c++;}
    s[1]=s[1]==undefined?"0":s[1];
    for(i=s[1].length;i<r;i++) {s[1]+="0";}
    return curr+t+decdelim+s[1];
    }
    function input_focus(t) {
    t.value=t.getAttribute('ref');t.select();
    }
    function input_keydown(t,e) {
    return haltnondigit(e);t.value=t.getAttribute('ref');
    }
    function input_keyup(t,s) {
    t.setAttribute('ref',t.value);
    if(s=="qty") {
    var temp=parseFloat(t.parentNode.nextSibling.firstChild.getAttribute('ref'))*t.value;
    t.parentNode.nextSibling.nextSibling.firstChild.setAttribute('ref',temp);
    t.parentNode.nextSibling.nextSibling.firstChild.innerHTML=format(temp,2);
    }
    else if(s=="harga") {
    var temp=parseFloat(t.parentNode.previousSibling.firstChild.getAttribute('ref'))*t.value;
    t.parentNode.nextSibling.firstChild.setAttribute('ref',temp);
    t.parentNode.nextSibling.firstChild.innerHTML=format(temp,2);
    }
    calc_total();
    }
    function input_onblur(t) {
    t.value=format(t.value,2);
    return false;
    }
    function calc_total() {
    var x=d.getElementsByTagName("DIV");
    var total=0;
    for(i=0;i<x.length;i++) {
    if(x[i].id=="subtotal") total+=isNaN(parseFloat(x[i].getAttribute("ref")))?0:parseFloat(x[i].getAttribute("ref"));
    }
    d.getElementById("total").innerHTML=format(total,2);
    }
    function MM_openBrWindow(theURL,winName,features) { //v2.0
    window.open(theURL,winName,features);
    }
    </script>
    <body>
    <form id="form1" name="form1" method="post" action="<?php echo $editFormAction; ?>" >
    <table width="832" border="1" cellspacing="0" cellpadding="0">
    <tr>
    <td>MATERIAL</td>
    <td>QTY</td>
    <td>HARGA</td>
    <td>JUMLAH</td>
    </tr>
    <tr>
    <td><label for="material"></label>
    <input type="text" name="material" id="material" />
    <input name="help" type="button" id="help" onclick="MM_openBrWindow('window/test window harga.php','','scrollbars=yes,width=700,height=500')" value="Help"

    /></td>
    <td><input type="text" id="qty" name="qty[]" value="0"
    rel="0"
    ref="0"
    onfocus="input_focus(this);"
    onkeydown="return input_keydown(this,event);"
    onkeyup="input_keyup(this,'qty');"
    >
    </td><td><input type="text" id="harga" name="harga[]" value="0"
    rel="0"
    ref="0"
    onfocus="input_focus(this);"
    onkeydown="return input_keydown(this,event);"
    onkeyup="input_keyup(this,'harga');"
    onblur="return input_onblur(this);"
    >
    </td><td><div id="subtotal" align="right" ref="0">0.00</div></td>
    </tr>
    <tr>
    <td> </td>
    <td> </td>
    <td id="price" > </td>
    <td> </td>
    </tr>
    <tr>
    <td colspan="4"><div align="center">
    <input type="submit" name="submit" id="submit" onclick="return tanya()" value="Submit" />
    <input type="reset" name="reset" id="reset" value="Reset" />
    </div></td>
    </tr>
    </table>
    <input type="hidden" name="MM_insert" value="form1" />
    <script>
    calc_total();
    </script>

    </form>
    </body>
    </html>
  • Iya master kalau angka aq ketik dengan keyboard jalan master

    Tapi angka qty aq ketik pakai keyboard
    Angka harga aq ambil dari pupop window
    Angka harga mau pindah ke field harga tapi rumus tidak jalan

    Kalau aq klik kolom field harga, angka / nilai yg ada (dari pupopwindow) jadi kosong....
    Harus diketik ulang jadinya....
    Rumus tidak jalan kalau nilai harga aq ambil dari pupopwindow
    Aq klik tombol help muncul nama material dan harga...aq klik / pilih nama materialnya, material tersebut pindah ke parent window / ke form input dan harga juga mau pindah tp rumus tidak mau jalan ( tidak mau mengalikan otomatis)
  • ya koding popup window nya mana ?

    saat elo set harga itu juga saat elo juga langsung hitung ulang.
    pangil fungsi input_keyup() dgn parameter yg sesuai.
  • ini coding window pupop nya

    https://pastebin.com/xycLDCD3

    // pangil fungsi input_keyup() dgn parameter yg sesuai.

    nggak ngerti...dulu juga scriptnya copas dari master ...tinggal copas... :s

    mana paham function haltnondigit(e) ............

  • window.opener.document.getElementById('harga').value =harga;
    window.opener.input_keyup( ... , ... );

    coba elo pikir dolo dah, itu kira2 parameter nya apa ?
  • :s :( :/ sepertinya blank di otak
  • lha kalo yg lain panggil nya input_keyup() kaya apa ?
  • Kenapa di window pupop,windonya khan gk mslh nilai material dan harga mau pindah ke parent form input
    Gimana logikanya,kenapa tidak di form inputnya ?
  • edited November 16
    :D :D :D

    astaga ...
    ini gw bingung jelasinnya ke elo ...

    tapi gini aja wis ...
    ndak ada event di form yg bisa dipake buat mendeteksi perubahan nilai di input text kalo perubahan itu asalnya dari javascript.
    onchange kagak bisa dipake.
    oninput kagak bisa dipake.
    onfocus juga kagak bisa.
    apa lagi onkey ...
    <input type="button" value="set 1000" onclick="document.getElementById('test').value=1000">
    <input type="text" id="test" value="0"
    onkeyup="alert('onkeyup active');"
    onkeydown="alert('onkeydown active');"
    onchange="alert('onchange active');"
    oninput="alert('oninput active');"
    onfocus="alert('onfocus active');"
    onblur="alert('onblur active');"
    onfocusin="alert('onfocusin active');"
    onfocusout="alert('onfocusout active');"
    >
    coba elo klik button nya ... apa ada trigger yg aktif ?
    coba elo klik isiannya ... :D ... itu kalo tab / window nya kagak ditutup, alert nya ndak abis2.

    jadi ya dari javascript yg melakukan perubahan itu yg sekaligus harus menjadi trigger / melakukan perubahan / menjalankan fungsi.
  • // lha kalo yg lain panggil nya input_keyup() kaya apa ?

    Ini maksudnya Yg di window pupop apa di form input ??
  • emang input_keyup() adanya di mana ?
  • Form input...aq coba dulu
  • aq coba rubah semua jadi input_keyup()
    harga di klik sudah mau tetap gak hilang tapi rumus ttp gak mau jalan
    https://pastebin.com/0uptAhEN
  • edited November 16
    gimana ? :D

    lha sudah ta tunjukin yg mesti ditambah ... kok malah jadi ke mana-mana ...

    window.opener.document.getElementById('harga').value =harga;
    window.opener.input_keyup( ... , ... );

    tinggal isi titik-titik nya doang lho ...

    window.opener.document.getElementById('harga').value =harga;
    adanya di mana ?

    tinggal nambah perintah yg ta tulis.
    di isi titik-titik nya ...

    kalo ndak paham titik-titik itu isinya apa ...
    liat penggunaan input_keyup() yg lain, isi parameter nya apa.
  • //liat penggunaan input_keyup() yg lain, isi parameter nya apa.

    function input_keyup(t,s) {
    t.setAttribute('ref',t.value);
    if(s=="qty") {
    var temp=parseFloat(t.parentNode.nextSibling.firstChild.getAttribute('ref'))*t.value;
    t.parentNode.nextSibling.nextSibling.firstChild.setAttribute('ref',temp);
    t.parentNode.nextSibling.nextSibling.firstChild.innerHTML=format(temp,2);
    }
    else if(s=="harga") {
    var temp=parseFloat(t.parentNode.previousSibling.firstChild.getAttribute('ref'))*t.value;
    t.parentNode.nextSibling.firstChild.setAttribute('ref',temp);
    t.parentNode.nextSibling.firstChild.innerHTML=format(temp,2);
    }
    calc_total();
    }

    onkeyup="input_keyup(this,'qty');"
    onkeyup="input_keyup(this,'harga');"

    1. ini kucoba tidak bisa
    window.opener.document.getElementById('harga').value =harga;
    window.opener.input_keyup('qty','harga');
    window.close();

    2. window.opener.input_keyup(this,'harga'); tidak bisa
    3. window.opener.input_keyup(t,s); tidak bisa
    :(

  • edited November 18
    onkeyup="input_keyup(this,'qty');"
    onkeyup="input_keyup(this,'harga');"

    ok, elo sudah tau mana yg mesti elo liat.

    window.opener.input_keyup('qty','harga');
    window.opener.input_keyup(this,'harga');
    window.opener.input_keyup(t,s);

    tapi kayanya elo emang kagak paham ...
    emang salah semua.

    sekarang pahami dulu ...

    -----------------------------------------------------------------------

    [1]
    perubahan mau elo lakuin di isian harga ... berarti "seolah-olah" elo harus meniru pengisian harga.

    [2]
    kalo pake cara isi form biasa ... tiap kali elo mengisi data dgn diketik, fungsi input_keyup() langsung jalan.
    jadi elo juga harus menjalankan fungsi ini kalo isian dilakukan via javascript.

    [3]
    parameter input_keyup() cuma ada 2 ... yg pertama object, yg kedua string.

    [4]
    parameter yg pertama itu t ... rujukannya ke object element.
    karena yg dikirim "this" itu artinya object element dimana pemanggilan fungsi itu terjadi.

    <input type="text" id="harga" ...
    ...
    onkeyup="input_keyup(this,'harga');"
    ...
    >

    "this" itu merujuk ke object element <input>, karena "this" disebut dan dipanggil di dalam element itu.

    object element nya sama dengan jika elo panggil pake :
    document.getElementById("harga")
    ini juga menunjuk ke element <input> yg sama.

    jadi "this" di <input type="text" id="harga" ... onkeyup="input_keyup(this,'harga');" ... > = document.getElementById("harga")


    [5]
    parameter yg kedua cuma ada dua pilihan 'qty' atau 'harga'.
    itu cuma buat menentukan nilai field yg itu harus dikalikan dgn ISI ELEMEN YG MANA.

    kalo parameter kedua isinya 'qty', maka fungsi harus ambil value dari "harga".

    parseFloat(t.parentNode.nextSibling.firstChild.getAttribute('ref'))

    t.parentNode.nextSibling.firstChild.getAttribute('ref')

    t = this, <input> dgn id "qty"
    parentNode = element 1 tingkat di atas <input> : <td>
    nextSibling = element setingkat dgn <td>, tetapi di urutan setelahnya : <td> berikutnya yg berisi <input> dgn id "harga"
    firstChild = element 1 tingkat di bawah <td> = <input> dgn id "harga"

    getAttribute('ref') = ambil nilai attribute "ref" nya ... isinya ya nilai "harga" tapi tanpa format ###.###.###,##

    kalo parameter kedua isinya 'harga', coba elo pahami sendiri.

    -----------------------------------------------------------------------

    sudah ...

    kalo elo sudah paham parameter nya itu apa ...

    window.opener.document.getElementById('harga').value =harga;
    window.opener.input_keyup( ... , ... );

    coba elo isi titik-titik nya.

    perhatikan baik-baik tulisan yg gw bold-italic
  • edited November 18
    sudah kubaca lebih dari 10 x ttp gk mudeng
    jadi "this" di <. input type="text" id="harga" ... onkeyup="input_keyup(this,'harga');" ..... > =document.getElementById("harga")

    kucoba

    window.opener.document.getElementById('harga').value =harga;
    window.opener.input_keyup(document.getElementById('harga'),'harga');
    window.close();

    sepertinya salah :( malu aq sama master, gelap gulita javascript
  • edited November 18
    window.opener.input_keyup(document.getElementById('harga'),'harga');

    gw pecah ya ...

    window.opener.input_keyup( ... );
    benar, input_keyup( ... ) memang ada di window yg membuka popup.
    bisa dipanggil dan bisa dijalankan.

    document.getElementById( ... )
    document ... ini menunjuk ke window popup karena elo panggil di script yg ada di window popup.
    getElementById( ... ) ... ini method nya document, pasti ada

    'harga' ... ID element yg mau diambil ...
    tapi tunggu dulu ...
    berhubung document nya menunjuk ke window popup, otomatis ya nyarinya di window popup.
    kira-kira bakal ketemu atau kagak ?

    emang 'harga' itu ada di mana to ?
    di window popup nya ?
    atau di window yg membuka popup nya ?
  • lha kok bingung to ...

    jawab dulu aja ini :

    emang 'harga' itu ada di mana to ?
    di window popup nya ?
    atau di window yg membuka popup nya ?
  • aq cari di mbah google gk ada referensi mengambil element id di parent window

  • yah di window pembuka popup
  • edited November 18
    aq cari di mbah google gk ada referensi mengambil element id di parent window
    :D :D :D
    window.opener.input_keyup( ... );
    benar, input_keyup( ... ) memang ada di window yg membuka popup.
    bisa dipanggil dan bisa dijalankan.
    sudah di bold ... di garis bawah juga ...

    dan dari awal elo juga sudah nulis sendiri dan pake di koding elo ... :D :D :D :D :D :D
    window.opener.document.getElementById('harga').value =harga;
  • yah master bilang
    document.getElementById( ... )
    document ... ini menunjuk ke window popup karena elo panggil di script yg ada di window popup.
    getElementById( ... ) ... ini method nya document, pasti ada

    menunjuk ke window popup

    nah ini kenapa saat click tidak mau close ?? padahal sudah ada window.close()
    window.opener.document.getElementById('harga').value =harga;
    window.opener.input_keyup(window.opener.document.getElementById('harga'),'harga');
    window.close();
  • yah master bilang
    document.getElementById( ... )
    document ... ini menunjuk ke window popup karena elo panggil di script yg ada di window popup.
    getElementById( ... ) ... ini method nya document, pasti ada

    menunjuk ke window popup
    maksudnya gimana ?
    document di situ emang menunjuk ke window popup nya.

    kalo elo mau akses document yg di window yg membuka popup itu ya elo harus tulis :
    window.opener.document

    2 document itu beda object.
    tiap kali elo buka window otomatis di window itu juga langsung punya object document.



    ndak mau close gimana ?
    koding elo sekarang kaya apa ?

  • function insertcustomer(id) {
    var material=document.getElementById("cm"+id).innerHTML;
    var harga=document.getElementById("tx"+id).innerHTML;
    window.opener.document.getElementById('material').value =material;
    window.opener.document.getElementById('harga').value =harga;
    window.opener.input_keyup(window.opener.document.getElementById('harga'),'harga');
    window.close();
    }


    sebelum ada yg di Bolt, popup window dibuka, dipilih, popup window langsung close ototmatis

    setelah ada yg di bolt, tidak bisa close otomatis popup window nya
  • trus form nya mana ?
  • input_keyup() memanggil calc_total() di akhir ...

    di calc_total() bagian akhir ada :
    d.getElementById("total").innerHTML=format(total,2);

    element dgn ID "total" ada di mana ?
  • SOLVED master

    nanya lagi satu master,

    function input_keyup(t,s) {
    t.setAttribute('ref',t.value);
    if(s=="qty") {
    var temp=parseFloat(t.parentNode.nextSibling.firstChild.getAttribute('ref'))*t.value;
    t.parentNode.nextSibling.nextSibling.firstChild.setAttribute('ref',temp);
    t.parentNode.nextSibling.nextSibling.firstChild.innerHTML=format(temp,2);
    }
    else if(s=="harga") {
    var temp=parseFloat(t.parentNode.previousSibling.firstChild.getAttribute('ref'))*t.value;
    t.parentNode.nextSibling.firstChild.setAttribute('ref',temp);
    t.parentNode.nextSibling.firstChild.innerHTML=format(temp,2);
    }
    calc_total();
    }

    ini khan logikanya perhitungan otomatis simultan QTY X HARGA = JUMLAH

    andai logika system QTY diganti jadi SISA dan HARGA jadi PAKAI
    perhitungannya SISA -PAKAI= HASIL

    aq otak atik yg aq bold gak mau yaa....gak semudah kayak excel :p :p
  • ya liat elo bikin form nya kaya apa to yo ...
Sign In or Register to comment.