在字符串中添加字符(输入字段)

时间:2010-06-13 14:44:44

标签: javascript jquery

我有一个文本框,其中的值是jQuery中执行计算的结果。我想用jQuery做的是,如果数字是负数,则在文本框中的数字周围显示括号。

这个号码可能会在以后再次使用,因此我必须删除括号,以便进行进一步的计算。

关于如何实现这一点的任何想法?

由于

的ZAP

3 个答案:

答案 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/