我有一个双模式的radtextbox。我已经将其设置为1.因此它将结果作为
20.6 => 20.5
20.7 => 20.5
20.9 => 21.0
但我需要的只是这样(少量样本)
20.6 => 21.0
20.5 => 20.5
20.4 => 20.0
20.29 => 20.0
20.53 => 20.5
20.59 => 21
我试图通过限制多个十进制值来解决这个问题。但是代码运行不正常。
代码:
<script type="text/javascript">
function GetIndex(sender, args) {
var textbox = $find('<%= CPDPointsTextBox.ClientID %>');
var val = textbox.get_value();
var dsds = val.toString();
if (dsds.indexOf(".") > -1) {
if (dsds.length - (dsds.indexOf(".") + 1) > 1) {
alert(dsds.length - (dsds.indexOf(".") + 1));
args.set_cancel(true);
}
else
return true;
}
else {
if (parseInt(dsds) > 0) {
return true;
}
else
args.set_cancel(true);
}
}
<telerik:RadNumericTextBox ID="CPDPointsTextBox" Width="39px" runat="server" MaxLength="5"
MaxValue="999" MinValue="0">
<NumberFormat DecimalDigits="1" KeepNotRoundedValue="false" />
<ClientEvents OnValueChanged="CPDPointsTextBox_ValueChanged" OnKeyPress="GetIndex" />
</telerik:RadNumericTextBox>
答案 0 :(得分:1)
您可以将Jquery用于此
var num = parseFloat(document.getElementById('textbox').value);
var new_num = Math.round(num).toFixed(2);
在这里试试 JsFiddle
答案 1 :(得分:0)
我正在使用以下代码。 (可能更笨重)。
function convertFloatDecimal (num, nDecimal)
{
var s;
if (nDecimal == null)
nDecimal = 1;
if (nDecimal == 1)
{
if (num < 0)
{
num= Math.abs (num);
s = ((Math.round (parseFloat (num) * 10)/10 ) * -1);
}
else
s = (Math.round (parseFloat (num) * 10)/10);
s = s.toString();
if (s.indexOf (".") == -1)
s+= ".0";
}
else if (nDecimal == 2)
{
if (num < 0)
{
num= Math.abs (num);
s = ((Math.round (parseFloat (num) * 100) / 100) * -1);
}
else
s = (Math.round (parseFloat (num) * 100) / 100);
s = s.toString();
if (s.indexOf (".") == -1)
s+= ".00";
if (s.indexOf (".") == s.length-2) // Add leading 0
s+= "0";
}
else if (nDecimal == 0)
{
if (num < 0)
{
num= Math.abs (num);
s = (Math.round (num) * -1);
}
else
s = (Math.round (num));
}
else
{
s = parseInt (s);
}
return s;
}
答案 2 :(得分:0)
以下代码符合预期。感谢您的所有回复。
代码:
function change(lnk, evt) {
var textbox = $find('<%= CPDTextBox.ClientID %>');
var val = lnk.value.toString();
if (val != '') {
if (val.indexOf(".") > -1) {
var values = new Array();
values = val.split(".");
var rouDec = round(parseFloat('.' + values[1]), 1);
if (rouDec > .5) {
val = parseInt(values[0]) + 1;
}
else if (rouDec == .5) {
val = parseInt(values[0]) + .5;
}
}
}
textbox.set_value(val);
}
function round(n, dec) {
n = parseFloat(n);
if (!isNaN(n)) {
if (!dec) var dec = 0;
var factor = Math.pow(10, dec);
return Math.floor(n * factor + ((n * factor * 10) % 10 >= 5 ? 1 : 0)) / factor;
} else {
return n;
}
}