将字符添加到字符串(输入字段)

问题描述:

我有一个文本框,其中的值是在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/

+0

而不是.each,你可以使用.change为了使它在飞行中发生。但是,再次,您可能需要一些代码来说明括号内的任何数字。 – 2010-06-13 15:09:22