2015-12-14 41 views
0

我正在開發一個金融計算器,我想顯示括號內的數值,如excel的負數,我已經在爲十進制值做自定義屬性actual val,並顯示四捨五入的值,所以很難爲此管理另一個屬性,或者如果檢查每個輸入和結果,這是非常困難的,因爲有數千次計算。例如如何顯示使用jquery的負整數括號excel

var value = -20000 // actual value 

,所以如果我輸入的設定值

$("#input").val(value); 

我想告訴

(20000) 

但是當我值,因此不需要括號$( 「#輸入」 ).val(),需要相同的結果

回答

2

從負號改變值大括號可以blur函數來完成。挑戰是在發起事件時獲得正確的值。這可以通過覆蓋val()事件並在那裏進行操作來完成。

(function($) { 
    var originalVal = $.fn.val; 
    $.fn.val = function(value) { 
    if (arguments.length >= 1) { 
     // setter invoked, do processing 

     return originalVal.call(this, value); 
    } 
    //getter invoked do processing 
    if ($(this).attr('data-type') == 'number') { 
     var valueToReturn = originalVal.call(this); 
     return valueToReturn.replace(/\(/g, '-').replace(/\)/g, ''); 
    } 
    return originalVal.call(this); 
    }; 
})(jQuery); 

我從here重寫val()事件的想法。

我創建了一個jsFiddle here來演示這一點。在按鈕點擊事件處理程序中看到,我們只是使用$('#myNumber').val()來獲取正確的值。

請注意,您仍然需要處理無效數字的情況。

希望這會有所幫助!

+0

我在編輯它之前閱讀了這個問題,並沒有看到破折號的替換。你的小提琴似乎是史詩般的。即使我沒有這個用例,如果我需要類似的東西,請確保使用這個! – Randy

0

你想要的是圍繞整數括號,但你不能添加它們與JS,是你在說什麼?

您是否試過CSS beforeafter

HTML:

<p>My name is Donald</p> 
<p>I live in Ducksburg</p> 

<p><b>Note:</b> For this selector to work in IE8, a DOCTYPE must be declared, and you must use the old, single-colon CSS2 syntax (:before instead of ::before).</p> 

CSS:

p::before { 
    content: "("; 
} 

p::after { 
    content: ")"; 
} 

這樣你就可以用方括號括每個值沒有任何麻煩。 ( - )

http://www.w3schools.com/cssref/sel_before.asp

http://www.w3schools.com/cssref/sel_after.asp

https://jsfiddle.net/pa6pvpes/

+0

只適用於否定。另外,問題提到「輸入」(用'.val()'not .text()') - 你能否確認css是否也會處理輸入(與before + after)?有可能OP不需要「輸入」和純文本就足夠了,在這種情況下,這可能是理想的。 –

+0

如果你可以檢查是否有值是負值,你可以給這個'div'或任何一個類。這些類是你在'之前'和'之後'使用的類。但是,如果你能識別它們,這就是訣竅。 – Randy