我有一个文本框,其中的值是jQuery中执行计算的结果。我想用jQuery做的是,如果数字是负数,则在文本框中的数字周围显示括号。
这个号码可能会在以后再次使用,因此我必须删除括号,以便进行进一步的计算。
关于如何实现这一点的任何想法?
由于
的ZAP
答案 0 :(得分:2)
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;
}
答案 1 :(得分:1)
首先,将计算存储在变量中。您不应该使用DOM来存储数据(在大多数情况下)。这基本上消除了你的问题。
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.
如果确实想要将数据存储为文本输入的.value,您也可以创建unbracketed
函数:
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;
};
答案 2 :(得分:0)
假设您可能有多个字段(并且您不想要负号):
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/)