0

我可怕的表单有所有内联点击。我想知道是否有人可以帮助我清理这个烂摊子,因为我需要正确运行它。在 Fido 上,我只能使用内联,这很糟糕。我希望有人能帮忙!

http://jsfiddle.net/HdhCr/10/

内联JS

    function calc_total() {
        f=document.etg_p_print_form;
        t=document.etg_p_print_form.total_price;
        tt=0;

        for(i=1;i<17;i++)
        {
            if (f.elements['abo_single['+i+']'])
            {

                if(f.elements['abo_single['+i+']'].length>0)
                {
                    if(f.elements['abo_single['+i+']'][0].checked==true)
                    {
                        var tpr = f.elements['price_abo['+i+']'].value*f.elements['quantity['+i+']'].value;
                        var tpr2 = f.elements['price_abo['+i+']'].value*f.elements['quantity['+i+']'].value;
                        tpr_repl=number_format(tpr);
                        tpr_repl_num=tpr_repl.lastIndexOf('.');
                        f.elements['sum['+i+']'].value=tpr_repl.substring(0,tpr_repl_num)+'.'+tpr_repl.substring(tpr_repl_num+1,tpr_repl.length);
                        tt +=tpr2;
                    } else {
                        var tpr = f.elements['price_single['+i+']'].value*f.elements['quantity['+i+']'].value;
                        var tpr2 = f.elements['price_single['+i+']'].value*f.elements['quantity['+i+']'].value;
                        tpr_repl=number_format(tpr);
                        tpr_repl_num=tpr_repl.lastIndexOf('.');
                        f.elements['sum['+i+']'].value=tpr_repl.substring(0,tpr_repl_num)+'.'+tpr_repl.substring(tpr_repl_num+1,tpr_repl.length);

                        tt +=tpr2;
                    }
                } else {
                    if(f.elements['abo_single['+i+']'].value=='abo')
                    {
                        var tpr = f.elements['price_abo['+i+']'].value*f.elements['quantity['+i+']'].value;
                        var tpr2 = f.elements['price_abo['+i+']'].value*f.elements['quantity['+i+']'].value;
                        tpr_repl=number_format(tpr);
                        tpr_repl_num=tpr_repl.lastIndexOf('.');
                        f.elements['sum['+i+']'].value=tpr_repl.substring(0,tpr_repl_num)+'.'+tpr_repl.substring(tpr_repl_num+1,tpr_repl.length);
                        tt +=tpr2;
                    } else {
                        var tpr = f.elements['price_single['+i+']'].value*f.elements['quantity['+i+']'].value;
                        var tpr2 = f.elements['price_single['+i+']'].value*f.elements['quantity['+i+']'].value;
                        tpr_repl=number_format(tpr);
                        tpr_repl_num=tpr_repl.lastIndexOf('.');
                        f.elements['sum['+i+']'].value=tpr_repl.substring(0,tpr_repl_num)+'.'+tpr_repl.substring(tpr_repl_num+1,tpr_repl.length);
                        tt +=tpr2;
                    }
                }
            } 
        }
        tt_repl=number_format(tt);
        tt_repl_num=tt_repl.lastIndexOf('.');
        t.value=tt_repl.substring(0,tt_repl_num)+'.'+tt_repl.substring(tt_repl_num+1,tt_repl.length);
    }

    function number_format(val)
        {
            var nval='';
            var nnval='';
            var val=val.toFixed(2);
            for(ii=0;ii<val.length;ii++)
            {
                var tval=eval(ii+1);

                pos=eval(val.length-tval);
                nval += val.substr(pos,1);

                var test_val=eval(tval);
                var test_val=eval(test_val/3);
                if(test_val==test_val.toFixed(2) && tval!=val.length && eval(test_val)!=1)
                {
                    nval += '\'';
                }
            }
            for(z=0;z<nval.length;z++)
            {
                var ntval=eval(z+1);
                var npos=eval(nval.length-ntval);
                nnval += nval.substr(npos,1);
            }
            return nnval;
        }
</script>

HTML

<form action=" " method="post" name="etg_p_print_form"  class="form-calculator">
<input type="radio" name="abo_single[1]" value="abo" checked onChange="calc_total();" onClick="calc_total();" />
<input type="hidden" name="price_abo[1]" value="529" />
<br>
<input type="radio" name="abo_single[1]" value="single" onChange=";calc_total();" onClick="calc_total();" />
<input type="hidden" name="price_single[1]" value="90" />
<br>
how many?
<input type="text" class="input" name="quantity[1]" value="0" size="2" maxlength="2" onChange="if(isNaN(this.value)) { alert('HELLO'); this.value=0; } calc_total();" />
<br>
   <br> 
price<input type="hidden" name="tit_prod[1]" value="EurotaxListe PKW" />
529.00
<input type="text" class="input" name="sum[1]" value="0.-" readonly onChange="calc_total();" />
<br>

<p>Total
<input type="text" name="total_price" value="0.-" readonly  onChange="calc_total();" />
 </p>
</form> 
4

1 回答 1

0

如果您只想去除内联onClick属性,可以这样做:

$('form.form-calculator input').on('change', function() {
    calc_total();
}

编辑

$('form.form-calculator input').on('change,click', function() {
    if ($(this).val() === 0) {
        alert('HELLO');
        this.value=0;
    }

    calc_total();
}
于 2013-04-11T10:11:17.410 回答