2013-12-11 72 views
0

我有一個表單輸入字段。輸入刪除前導0

<input style="text-align:right;" type="text" name="DiversionCalc_Diversion_Rate" id="calc_dr" value="0.25%" /> 

我試圖根據使用jQuery 1.7.2

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

雖然這主要是工作,警報彈出正確0.25,當我在字段中輸入0.25事件的內容進行格式化,然而,$(this).val只有有史以來.25

我怎樣才能得到它顯示什麼它顯示我在警報?

+1

因爲您仍在使用'value'。你必須讓'$ t'全局並分配它。 – Krishna

+0

你的第二塊如果塊取代它回到原來的價值。用「.25%」進行測試 – Malk

回答

1

使$t成爲一個全局變量(將其從if循環中取出)並將其賦值而不是value

$('#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 + '%'); 
    } 
}); 
1

基本思想是抓住價值,操縱價值,然後更新用戶界面。關鍵是最後只有一個更新。

// 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) + '%');