【问题标题】:numeral.js live formattingnumeric.js 实时格式化
【发布时间】:2016-11-21 01:57:10
【问题描述】:

我想用 Numeral.js 对输入框进行实时格式化。

我试过这样的。

    $('#exchangeInputFirst').keyup(function () { 
//eur formatting
            numeral.language('sk');
            $('#exchangeInputFirst').val(numeral($('#exchangeInputFirst').val()).format('0,0.00$'); 

//to HUF format            $('#exchangeInputSecond').val($('#exchangeInputFirst').val()*$('#first').html());
            numeral.language('hu');
            var string = numeral($('#exchangeInputSecond').val()).format('0,0.00$'); 
            $('#exchangeInputSecond').val(string);
        });

第二个函数运行良好(以 HUF 格式),但第一个没有。

【问题讨论】:

    标签: javascript jquery numeral.js


    【解决方案1】:

    我认为您缺少数字语言文件:

    <script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/1.5.3/languages.min.js"></script>
    

    除非我不包含语言 js 文件,否则我无法重现您的情况。试试你的例子,然后在第一个输入框上按一个键:

    var a = false;
    $('#exchangeInputFirst, #exchangeInputSecond').click(function () {
    	$(this).caret(0);
    });
    
    $('#exchangeInputFirst, #exchangeInputSecond').keyup(function(){
    	if(a == false){
    		$(this).val('');
    		a = true
    	} else {
    		numeral.language($(this).data('language'));
    		$(this).val(numeral($(this).val()).format('0,0.00$'));
    		$(this).caret(0);
    	}
    });
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/1.5.3/numeral.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/1.5.3/languages.min.js"></script>
    <script src="http://zikro.gr/dbg/html/jquery.caret/dist/jquery.caret-1.5.2.min.js"></script>
    
    
    <input type="text" data-language="sk" id="exchangeInputFirst">
    <input type="text" data-language="hu" id="exchangeInputSecond">

    更新

    您的光标位置也有问题。您可以通过使用这个 jQuery 插件 acdvorak/jquery.caret 来解决这个问题,每次输入字符时将插入符号位置设置为输入的开头,如下所示:

    $(this).val(numeral($(this).val()).format('0,0.00$'));
    $(this).caret(0);
    

    另外,我已将语言包含在输入数据中,例如 data-language="sk",现在您可以直接在 keyup 事件中读取它,如下所示:

    numeral.language($(this).data('language'));
    

    查看我更新的 sn-p。它现在应该可以按您的意愿工作了。

    【讨论】:

    • 奇怪,我不能在第一个字段中正常输入数字? gyazo.com/b208be037e9ad619a6d82d8d73b88975
    • 何时应用数字格式?您已将其触发到第一个输入 keyup 事件。然后,当您在第一个字段上按键时,光标会移到新应用的字符串的末尾,因为这就是文本输入的工作方式。此外,在您按下第一个输入的键之前,第二个输入不会更新格式。你想在这里有什么确切的行为?
    • 嗯。我想在输入时立即格式化输入数字。我要找的不是 keyup 功能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多