Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    [jquery]con IE non va funzione ricalcolo

    ciao a tutti.
    ho una funzione in jquery che permette di ricalcolare dei valori su una tabella in modo dinamico.

    in pratica con una funzione creo una serie di <td> e <input>
    quando creo i campi input lego la funzione di ricalcolo con
    .bind('keyup', recalc)

    questa è la funzione di ricalcolo
    Codice PHP:
    function recalc(){
        $(
    "[id^=JQprezzoUnita_]").calc(
            
    // the equation to use for the calculation
            
    "qty * price",
            
    // define the variables used in the equation, these can be a jQuery object
            
    {
                
    qty: $("input[id^=JQunita_]"),
                
    price: $("input[id^=JQprezzo_]")
            },
            
    // define the formatting callback, the results of the calculation are passed to this function
            
    function (s){
                
    // return the number as a dollar amount
                
    return "€" s.toFixed(2);
            }
        );


    se viene richiamata da <input> creati dinamicamente da jquery tutto va.
    quando provo a richiamarla da degli input scritti da php non va.

    la cosa particolare è che non va solo con IE (provato 7 e 8 )
    mentre con Gcrome,opera,safari e FF funziona perfettamente

    negli input creati da PHP scrivo così
    Codice PHP:
    <tr>
    <
    td align="center">
        <
    input type="text" id="JQprezzo_1" size="8" name="n_art1-prezzo" value="0.00" onkeyup="recalc();">
    </
    td>
    <
    td align="center">
         <
    input type="text" id="JQunita_1" size="2" name="n_art1-quanti" value="0.00" onkeyup="recalc();">
    </
    td>
    <
    td align="center">
      <
    h1 id="JQprezzoUnita_1"></h1>
    </
    td>
    </
    tr
    ovviamente gli id sono progressivi.. eppure..non capisco perchè solo con ie non va
    mi dareste una mano?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    Codice PHP:
    var num=<?php echo $n;?>;
    function accoda(){
    var nim=num;
        $("#tbody")
            .append($('<tr>')
            .append($('<td align="center">') 
                .append($("<input>",{type: "text"}) 
                    .attr({id:'JQdesc_'+num,size:"70",name:"desc"+num})
                    .autocomplete({
                        source: "../../ajax_articolo.php",
                        minLength: 3,
                        select: function( event, ui ) {
                            
                            $("#JQprezzo_"+nim).val(ui.item.prezzo_ven)
                            $("#JQunita_"+nim).val("1")
                            $("#JQprezzoUnita_"+nim).empty().append(ui.item.prezzo_ven)
                            recalc()
                            }
                        })                    
                ) 
            )
            .append($('<td align="center">') 
                .append($("<input>",{type: "text"}) 
                    .attr({id:'JQprezzo_'+num,size:"8",name:"n_art"+num+"-prezzo"})
                    .bind('keyup', recalc)
                )
            )
            .append($('<td align="center">') 
                .append($("<input>",{type: "text"}) 
                    .attr({id:'JQunita_'+num,size:"2",name:"n_art"+num+"-quanti"})
                    .bind('keyup', recalc)
                )
            )
            .append($('<td align="center"><h1 id="JQprezzoUnita_'+num+'"></h1></td>'))
    }
    questa è la funzione che crea alla pressione di un tasto la tabella con i relativi input

    la funziona recalc() sopra funziona perfettamente con queste tabelle...

    ma se la tabella è già esistente... allora no.
    ma solo con IE. e non capisco perchè.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    risolto.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da nexus
    risolto.
    Come? Potrebbe essere utile in futuro.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    Codice PHP:
    $(function(){
        $(
    "[id^=JQprezzo_]").bind('keyup'recalc);
        $(
    "[id^=JQunita_]").bind('keyup'recalc);
        $(
    "[id^=JQsconto_]").bind('keyup'recalc);
        $(
    "[id^=JQiva_]").bind('keyup'recalc);
    }); 
    ho rimosso dalla funzione accoda() il .bind ai singoli input e ho creato una funziona esterna per applicare la funziona recalc() a tutti gli elementi con un inizio di id specifico.

    perchè a quanto pare (non lo sapevo)

    scrivere
    $("[id^=JQprezzo_]").bind('keyup', recalc);
    e
    <input type="text" value="" name="prezzo_1" id="JQprezzo_1" onkeyup="recalc();">

    a IE non va a genio, mentre su tutti gli altri browser (e intendo tutti, provati su piattaforma xp e win7 64bit) funziona perfettamente.

    questa soluzione ha di buono che funziona con IE, di negativo che da quando ho staccato il .bind dalla funzione accoda() i tempi per eseguire il ricalcolo dei valori è passato da istantaneo a circa 0.3 secondi.
    il tempo lo dico ad occhio, non ho un sistema per sapere il tempo di esecuzione dello script. se qualcuno lo conosce ve lo posso dire..

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non conosco jquery, ma provare non costa nulla e dare name e id uguali <input type="text" value="" name="JQprezzo_1" id="JQprezzo_1" onkeyup="recalc();"> mi sembra che IE (credo fino alla 7) mescola i due attributi, ritenendo id e name "sinonimi"
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    proverò, anche se i test li sto facendo su:

    IE7(winxp) --->NON VA
    IE8(winxp e win7) --->NON VA
    Gcrome(winxp e win7) -->VA
    FF(winxp e win7) -->VA
    Safari(winxp e win7) -->VA
    Opera(winxp e win7) -->VA

    quindi non credo sia quello il problema, però non si sa mai

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.