Javascript 输入删除前导0

Javascript 输入删除前导0,javascript,jquery,input-mask,Javascript,Jquery,Input Mask,我有一个表单输入字段 <input style="text-align:right;" type="text" name="DiversionCalc_Diversion_Rate" id="calc_dr" value="0.25%" /> 虽然这主要起作用,但当我在字段中输入.25时,警报会弹出正确的0.25,然而,$(this).val仅显示.25 我如何让它显示它在警报中显示的内容??将$t设为全局变量(将其从if循环中拉出),并将其赋值,而不是值 $('#calc_dr'

我有一个表单输入字段

<input style="text-align:right;" type="text" name="DiversionCalc_Diversion_Rate" id="calc_dr" value="0.25%" />
虽然这主要起作用,但当我在字段中输入.25时,警报会弹出正确的0.25,然而,
$(this).val
仅显示.25


我如何让它显示它在警报中显示的内容??

$t
设为全局变量(将其从if循环中拉出),并将其赋值,而不是

$('#calc_dr').focusout(function () {
    var value = $.trim($(this).val()).toString();
    var $t = value;
    if (value.indexOf("0.") === -1) {
        $t = ("0" + value).toString();
        alert($t);
        $(this).val($t);
    }
    if ($t != '' && $t.indexOf("%") === -1) {
        $(this).val($t + '%');
    }
});

基本思想是获取值,操纵值,然后更新UI。关键在于最后只有一个更新

// Get the new value (strip everything but numbers and period)
var v= parseFloat($(this).val().toString().replace(/[^0-9\.]+/g, ""));

// Basic data type validation
if (isNaN(v)) v= 0;
if (v< 0) v= 0;
if (v> 100) v= 100;

// other validation updates v as needed...
doCheckDiversionRate(v);

// update UI (btw toFixed() will add a leading zero)
$(this).val(v.toFixed(2) + '%');
//获取新值(除去数字和句点以外的所有内容)
var v=parseFloat($(this).val().toString().replace(/[^0-9\.]+/g,”);
//基本数据类型验证
如果(isNaN(v))v=0;
如果(v<0)v=0;
如果(v>100)v=100;
//根据需要进行其他验证更新。。。
多切克转移率(v);
//更新UI(顺便说一句,toFixed()将添加前导零)
$(this.val)(v.toFixed(2)+'%');

因为您仍在使用
。您必须将
$t
设为全局并将其赋值。您的第二个if块将其替换回原始值。使用“.25%”进行测试
// Get the new value (strip everything but numbers and period)
var v= parseFloat($(this).val().toString().replace(/[^0-9\.]+/g, ""));

// Basic data type validation
if (isNaN(v)) v= 0;
if (v< 0) v= 0;
if (v> 100) v= 100;

// other validation updates v as needed...
doCheckDiversionRate(v);

// update UI (btw toFixed() will add a leading zero)
$(this).val(v.toFixed(2) + '%');