2017-07-25 22 views
0

今天我在分隔負數和負數的問題上存在問題。例如,我有一個文本框來插入我的號碼和結果後寫入號碼。突然,數以逗號分隔符隔開這樣無論是數量是正面還是負面基於onkeyup和onkeypress的分號逗號分配正負數的javascript限制

eg : 1000 -> 1,000 
    -1000 -> -1,000 
    -1000.12 -> -1,000.12 
    -0.00001 -> -0.00001 

如何實現這個使用JavaScript,我所知道的是使用onkeypress事件和的onkeyup。非常感謝:)

回答

1

這不是最好的解決方案,但你可以根據你的需要來實現這個。


 

 
var msg = document.getElementById('myInputBox'), 
 
    numberPattern = /^[0-9]+$/; 
 

 
msg.addEventListener('keyup', function(e) { 
 
    msg.value = getFormattedData(msg.value); 
 
}); 
 

 
function checkNumeric(str) { 
 
    return str.replace(/\,/g, ''); 
 
} 
 
Number.prototype.format = function() { 
 
    return this.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"); 
 
}; 
 

 
function getFormattedData(num) { 
 
\t var i = checkNumeric(num), 
 
    \t isNegative = checkNumeric(num) < 0, 
 
     val; 
 
     
 
    if (num.indexOf('.') > -1) { 
 
     return num; 
 
    } 
 
    else if (num[num.length - 1] === ',') { 
 
    \t return num; 
 
    } 
 
    else if(i.length < 3) { 
 
    \t return i; 
 
    }else { 
 
    \t val = Number(i.replace(/[^\d]+/g, '')); 
 
    } 
 
    
 
    return (isNegative ? '-' : '') + val.format(); 
 
}
<input type="text" id='myInputBox' value="" />

+0

怎麼樣後面的數字逗號?你也介意告訴我他們的工作方式@Sumit?非常感謝您的幫助:) –

+0

@ faris-fajar請澄清您的問題。在示例中爲 – Sumit

+0

,存在十進制數,如-1000.12至-1,000.12。但是從我試過的運行代碼片段中,它接受了多個點''。 –