为什么input [type =“ number”]插入十进制值作为“ .00”?

时间:2019-08-03 05:06:26

标签: javascript php jquery html

我试图在我的数据库表中插入小数,但是我得到的只是尾随“ 0”。因此,例如,与其在数据库中插入“ 0.15”而不是插入“ 0.00”。当键入的数字为“ 1.05”时,它将插入为“ 1.00”。我已将step="any"添加到输入中,但看不到任何变化。如何修复我的代码,使其可以接受十进制值?

<form action="handler.php" method="post">
    <input class="i2" name="cshpntamt" type="number" step="any">
    <input class="span2" name="cshamt" type="number" step="any">
    <button type="submit" name="cashptsbut">Cash Out</button>
</form>

function cashPnt(event){
    var a = $(this).parent("form").find('input.i2').val();
    var b = 20;
    var c = a / b;
    var spanNum2 = $(this).parent("form").find('input.span2')[0];
    spanNum2.value = c;
}
$('input.i2').on('change keyup paste input', cashPnt);

我的数据库如下:

cshid     | int(11)
cshpntamt | int(11) 
cshamt    | decimal(10,2)  

编辑:已更新,其中包括handler.php文件:

 if(isset($_POST['cashptsbut'])) {
    $cshpntamt = $_POST['cshpntamt'];
    $cshamt = $_POST['cshamt'];
    $stmt = $conn->prepare("INSERT INTO cashpoints (cshpntamt, cshamt) VALUES (?, ?)");
    $stmt->bind_param("ii", $cshpntamt, $cshamt);
    $stmt->execute();
    $stmt->close();
}

2 个答案:

答案 0 :(得分:0)

语法:Number(((yourNumericValueHere).toFixed(2));

首先,将.toFixed(2)应用于要四舍五入到小数点后的数字。请注意,这会将值转换为数字的字符串。

例如: 我有一个小数位后最多5位数字的金额,我想将其缩短到小数点后2位。我这样做是这样的:

var price = 0.12345;
var priceRounded = Number((price).toFixed(2));
console.log('Original Price: ' + price);
console.log('Price Rounded: ' + priceRounded);

在您的代码中尝试此方法。希望它会起作用

答案 1 :(得分:0)

CharlesEF解决了这个问题:

您正在bind_parm语句中将数字转换为整数。将“ ii”更改为“ dd”或“ ff”

谢谢!