-1

我做了很长时间的研究,但我没有找到类似的案例。

我正在为一个项目使用jeditable插件,我需要创建一个输入类型号

首先,我在 jquery.jeditable.js 中创建了输入类型编号

    number: {
        element : function(settings, original) {
            var input = $('<input type="number" step="0.00">');
            if (settings.width  != 'none') { input.attr('width', settings.width);  }
            if (settings.height != 'none') { input.attr('height', settings.height); }
            /* https://bugzilla.mozilla.org/show_bug.cgi?id=236791 */
            //input[0].setAttribute('autocomplete','off');
            input.attr('number','off');
            $(this).append(input);
            return(input);
        }
    },

然后我把脚本放在我的html文件中

    $('.number').editable(function(value, settings) { 
     console.log(this);
     console.log(value);
     console.log(settings);
     return(value);
  }, { 
     type    : 'number', 
     style  : "inherit"
 });

我的html

<p class="number" style="text-align: right;">000,00</p>

问题是我不知道如何在所有浏览器中使用十进制和千位分隔符。正如您在上面看到的,我刚刚放了step="0.00但这仅适用于 FF

您能帮我了解如何正确添加小数和千位分隔符吗?

谢谢

4

2 回答 2

0

像这样?

    number: {
        element : function format(comma, period) {
            comma = comma || ',';
            period = period || '.';
            var split = this.toString().split('.');
            var numeric = split[0];
            var decimal = split.length > 1 ? period + split[1] : '';
            var reg = /(\d+)(\d{3})/;
                while (reg.test(numeric)) {
                    numeric = numeric.replace(reg, '$1' + comma + '$2');
                    }
                return numeric + decimal;}
            var input = $('<input type="number"');
            if (settings.width  != 'none') { input.attr('width', settings.width);  }
            if (settings.height != 'none') { input.attr('height', settings.height); }
            /* https://bugzilla.mozilla.org/show_bug.cgi?id=236791 */
            //input[0].setAttribute('autocomplete','off');
            input.attr('number','off');
            $(this).append(input);
            return(input);
        }
    },



$('.number').live('keyup', function(){
$(this).val(format.call($(this).val().split(' ').join(''),' ','.'));
});​
于 2012-10-14T11:32:37.240 回答
0

你可以试试这个:

function format(comma, period) {
comma = comma || ',';
period = period || '.';
var split = this.toString().split('.');
var numeric = split[0];
var decimal = split.length > 1 ? period + split[1] : '';
var reg = /(\d+)(\d{3})/;
    while (reg.test(numeric)) {
    numeric = numeric.replace(reg, '$1' + comma + '$2');
    }
return numeric + decimal;}

$('#mydiv').live('keyup', function(){
$(this).val(format.call($(this).val().split(' ').join(''),' ','.'));
});​
于 2012-10-14T10:47:43.983 回答