我有一个文本框,其中的值是在jQuery中进行计算后得出的结果。我想使用jQuery,在文本框中显示括号,如果数字为负数的话。
由于数字可能会在稍后再次使用,因此我需要删除括号,以便进行进一步的计算。
你有什么想法如何实现这个功能?
谢谢
Zaps
由于数字可能会在稍后再次使用,因此我需要删除括号,以便进行进一步的计算。
你有什么想法如何实现这个功能?
谢谢
Zaps
function FormatTextBox(id) {
var txtBox = $(id).val();
//strip bracket to get the number only
txtBox = txtBox.replace("[", "").replace("]", "");
var val = parseFloat(txtBox);
if (val < 0) {
txtBox.val("[" + val + "]");
} else {
txtBox.val(val);
}
return val;
}
Number.prototype.bracketed = function() {
if(this < 0) {
return '[' + -this + ']';
} else {
return '' + this;
}
};
var result = do_calculation();
myTextBox.value = result.bracketed();
// result still holds the original Number value.
String.prototype.unbracketed = function() {
var parts = this.match(/^\[([0-9]+)\]$|^([0-9]+)$/); // [number] or number
if(parts[1]) { // [number]
return -parseInt(parts[1], 10);
}
if(parts[2]) { // number
return parseInt(parts[2], 10);
}
return NaN;
};
假设您可能有多个字段(而且不希望出现负号):
jQuery('input').each(function(){
if(jQuery(this).val() < 0 ){
jQuery(this).val('['+-1*jQuery(this).val()+']');
}
}
)
然后当您再次获取该值时,只需去掉括号并乘以-1即可使其变为负数。
编辑:
您还可以使用jQuery('input').data()来存储原始数字,这样您就不必再次解析它。(阅读更多:http://api.jquery.com/data/)