将字符添加到字符串(输入字段)
问题描述:
我有一个文本框,其中的值是在jQuery中执行计算的结果。我想要做的,使用jQuery,如果数字是负数,则在文本框中的数字周围显示括号。将字符添加到字符串(输入字段)
该号码可能会在稍后再次使用,因此我将不得不删除括号,以便进一步计算。
任何有关如何实现这一点的想法?
感谢
的ZAP
答
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;
}
答
首先,存储在一个变量的计算。你不应该使用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;
};
答
假设你可能有多个字段(并且您不想要负号):
jQuery('input').each(function(){
if(jQuery(this).val() < 0){
jQuery(this).val('['+-1*jQuery(this).val()+']');
}
}
)
然后,当您再次获取该值时,只需去除括号并乘以-1以使其为负值。
编辑:
您还可以使用jQuery(“输入”)数据()保存原来的号码,这样你就不必再解析它。 (阅读更多:http://api.jquery.com/data/)
而不是.each,你可以使用.change为了使它在飞行中发生。但是,再次,您可能需要一些代码来说明括号内的任何数字。 – 2010-06-13 15:09:22