【问题标题】:How to show brackets like excel for negative integer using jquery如何使用jquery为负整数显示像excel这样的括号
【发布时间】:2015-12-14 22:20:44
【问题描述】:

我正在开发一个金融计算器,我想在负数的值周围显示括号,我已经在为十进制值做自定义属性实际 val 并显示整数值,因此很难为此管理另一个属性或应用 if 检查每个输入和结果,因为有数以千计的计算。

例如。

var value = -20000 // actual value

所以如果我为输入设置值

$("#input").val(value);

我要展示

(20000)

但是当我得到值时,不需要 $("#input").val() 中的括号,需要相同的结果

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    将值从负号 (-) 更改为大括号可以在 blur 函数上完成。挑战是在触发val() 事件时获得正确的值。这可以通过覆盖val() 事件并在那里进行操作来完成。

    (function($) {
      var originalVal = $.fn.val;
      $.fn.val = function(value) {
        if (arguments.length >= 1) {
          // setter invoked, do processing
    
          return originalVal.call(this, value);
        }
        //getter invoked do processing
        if ($(this).attr('data-type') == 'number') {
          var valueToReturn = originalVal.call(this);
          return valueToReturn.replace(/\(/g, '-').replace(/\)/g, '');
        }
        return originalVal.call(this);
      };
    })(jQuery);
    

    我想到了从here 覆盖val() 事件。

    我创建了一个 jsFiddle here 来演示这一点。看到在按钮单击事件处理程序中,我们只是使用$('#myNumber').val() 来获取正确的值。

    请注意,您仍然需要处理无效数字的情况。

    希望这会有所帮助!

    【讨论】:

    • 我在编辑之前阅读了这个问题,但没有看到破折号的替换。你的小提琴看起来很史诗。即使我没有这个用例,如果我需要类似的东西,我肯定会使用它!
    【解决方案2】:

    你想要的是整数周围的括号,但是你不能用JS添加它们,是你说的吗?

    你试过 CSS beforeafter 吗?

    HTML:

    <p>My name is Donald</p>
    <p>I live in Ducksburg</p>
    
    <p><b>Note:</b> For this selector to work in IE8, a DOCTYPE must be declared, and you must use the old, single-colon CSS2 syntax (:before instead of ::before).</p>
    

    CSS:

    p::before {
        content: "(";
    }
    
    p::after {
        content: ")";
    }
    

    这样您就可以毫无问题地用括号括住每个值。

    http://www.w3schools.com/cssref/sel_before.asp

    http://www.w3schools.com/cssref/sel_after.asp

    https://jsfiddle.net/pa6pvpes/

    【讨论】:

    • 应该只适用于它是否为负数。此外,问题提到了“输入”(.val() 不是 .text()`)-您能否确认 css 是否也可以处理输入(使用 before+after)? OP 可能不需要“输入”并且纯文本就足够了,在这种情况下这可能是理想的。
    • 如果你可以检查一个值是否为负,你可以给它div 或任何一个类。这些类是您使用beforeafter 的类。但如果你能识别它们,这就行了。
    猜你喜欢
    • 2015-10-16
    • 2012-12-22
    • 1970-01-01
    • 2019-08-26
    • 2018-12-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多