Javascript文本框钱打字

时间:2012-06-15 06:18:57

标签: php javascript mysql

我尝试以货币格式设置文本框类型。我做到了,但当我将值插入我的数据库时,值会发生变化。当我输入10000时,它会改变10,000。 (到目前为止一切都很好。)但是当我将该值插入数据库时​​,值变为10.我真的很困惑。

这是我的脚本。我使用php,mysql,字段类型为float

    <?php include('header.php'); ?>
<?php
    if(isset($_POST['simpan']))
    {
        $nama           = htmlentities(addslashes($_POST['nama']));
        $sim_wajib      = $_POST['sim_wajib'];
        $sim_pokok      = $_POST['sim_pokok'];
        $sim_sukarela   = $_POST['sim_sukarela'];
        $sim_wpinjam    = $_POST['sim_wpinjam'];
        $shu            = $_POST['shu'];
        $total          = $sim_wpinjam + $shu;

        if($nama != '' && $sim_wajib != '' && $sim_pokok != '' && $sim_sukarela != '' && $sim_wpinjam != '' && $shu != '' )
        {
            $sql     = "INSERT INTO simpanan_tbl";
            $sql    .= "(nama, sim_wajib, sim_pokok, sim_sukarela, sim_wajibpinjam, shu, jumlah)";
            $sql    .= "VALUES('$nama','$sim_wajib','$sim_pokok','$sim_sukarela','$sim_wpinjam','$shu','$total')";
            $query   = mysql_query($sql) or die(mysql_error());
            echo '<script type="text/javascript">alert("Data telah masuk!");document.location="manage_simpanan.php";</script>';
        }
        else
        {
            echo '<script type="text/javascript">alert("Kolom tidak boleh ada yang kosong!");</script>';
        }
    }
?>
<div id="rounded_add">
    <script type="text/javascript">
        function numberFormat(nr)
        {
            //remove the existing
            var regex = /,/g;
            nr        = nr.replace(regex,'');

            //split it into 2 parts
            var x   = nr.split(',');
            var p1  = x[0];
            var p2  = x.length > 1 ? ',' + x[1] : '';
            //match group of 3 numbers (0-9) and add ',' between them
            regex   = /(\d+)(\d{3})/;
            while(regex.test(p1))
            {
                p1 = p1.replace(regex, '$1' + ',' + '$2');
            }
            //join the 2 parts and return the formatted number
            return p1 + p2;
        }
    </script>
    <form method="post" name="form1">
        <table id="add_simpan" class="add">
            <tr>
                <td>No Anggota</td>
            </tr>
            <tr>
                <td><input type="text" id="" name="" class="textbox"></td>
            </tr>
            <tr>
                <td>Nama</td>
            </tr>
            <tr>
                <td><input type="text" id="nama" name="nama" class="textbox_left"></td>
            </tr>
            <tr>
                <td>Simpanan Wajib</td>
            </tr>
            <tr>
                <td><input type="text" id="sim_wajib" name="sim_wajib" class="textbox"></td>
            </tr>
            <tr>
                <td>Simpanan Pokok</td>
            </tr>
            <tr>
                <td><input type="text" id="sim_pokok" name="sim_pokok" class="textbox"></td>
            </tr>
            <tr>
                <td>Simpanan Suka Rela</td>
            </tr>
            <tr>
                <td><input type="text" id="sim_sukarela" name="sim_sukarela" class="textbox"></td>
            </tr>
            <tr>
                <td>Simpanan Wajib Pinjam</td>
            </tr>
            <tr>
                <td><input type="text" id="sim_wpinjam" name="sim_wpinjam" class="textbox" onkeyup="this.value = numberFormat(this.value);"></td>
            </tr>
            <tr>
                <td>SHU</td>
            </tr>
            <tr>
                <td><input type="text" id="shu" name="shu" class="textbox" onkeyup="this.value = numberFormat(this.value);"></td>
            </tr>
            <tr>
                <td><input type="submit" value="Simpan" id="simpan" name="simpan" class="button blues"></td>
            </tr>
        </table>
    </form>
</div><!-- END OF ROUNDED_ADD -->
<?php include('footer.php'); ?>

3 个答案:

答案 0 :(得分:0)

我不认为javascript不是这里的罪魁祸首。上面显示的代码只是为数字插入逗号。当插入数据库时​​,字段将浮动,将自动将值转换为浮点数或整数并删除剩余值。如果你可以发布DB的插入代码,也可以很容易地解决问题。

答案 1 :(得分:0)

只是一个提示。

不要将货币格式保存在数据库中,只保存数字(int,float),以便在需要时可以轻松地进行一些数学处理。

对于货币格式,只需将其用于显示目的。

答案 2 :(得分:0)

如果你 在你的文本框中有会计风格格式,我建议在每个文本框旁边有一个带有原始数值的隐藏字段。您可以在&#34; nr = nr.replace(正则表达式,&#39;&#39;)之后轻松地向js函数添加几行;&#34;将现在剥离的值复制到隐藏字段的部分。为此,您必须为每个文本框命名并将名称传递给numberFormat函数,以便将其保存到正确的隐藏输入。然后,在提交表单时,保存隐藏字段中的值,而不是打开的文本框。

或者,让您的“提交”按钮触发一个功能,以扫描所有文本字段并删除任何格式,然后将该表单作为该功能的一部分提交。

顺便说一句,将10,000作为一万个插入浮点字段会将其修剪为10.除非你使用逗号作为小数点(我认为法国人这样做了吗?)你保存了不正确的数据。