Javascript keyup上的角度添加逗号指令保持原始值为int

Javascript keyup上的角度添加逗号指令保持原始值为int,javascript,angularjs,Javascript,Angularjs,我正在构建一个名为add commas的指令,希望在输入中添加逗号。但是,我希望它能够做到这一点,而不需要我的代码的其余部分清除那些逗号。因此,我试图让指令隐藏当前输入并创建新输入 所以我的目标是创建一个新的输入,隐藏原始输入。然后,新输入有一个keyup事件,该事件将为其自身的值添加逗号(供用户查看),但随后删除逗号并更新原始隐藏输入的值。这样,对于我的ng模型变量,它总是不带逗号,但对于用户,它们会看到逗号 但是,如果我告诉它在()之后添加输入。原始输入,那么在更改新输入时,我不能使用.ne

我正在构建一个名为add commas的指令,希望在输入中添加逗号。但是,我希望它能够做到这一点,而不需要我的代码的其余部分清除那些逗号。因此,我试图让指令隐藏当前输入并创建新输入

所以我的目标是创建一个新的输入,隐藏原始输入。然后,新输入有一个keyup事件,该事件将为其自身的值添加逗号(供用户查看),但随后删除逗号并更新原始隐藏输入的值。这样,对于我的ng模型变量,它总是不带逗号,但对于用户,它们会看到逗号

但是,如果我告诉它在()之后添加输入
原始输入,那么在更改新输入时,我不能使用
.next()
来获取原始元素以更新其值,并且没有
.previous()
。根据,也没有
.before()
允许我将元素放置在原始元素之前,因此我可以使用
.next()
获取原始元素

/**
* Add Commas Directive
* @namespace Directives
*/
(function() {
'use strict';

angular
    .module('MyApp')
    .directive('addCommas', addCommas);

/**
 * @namespace addCommas
 * @desc Directive for adding commas to text inputs
 * @memberof Directives
 */
function addCommas($compile) {

    return {
        link: link
    };

    function link(scope, el, attrs) {
        hideThisInput(el);

        var newInput = createNewInputFromOriginal(el);
        clearInputClass(el);

        // Format value 
        newInput.bind('keyup', function () {
            // Remove previous commas
            var val = newInput.val().replace(/\D/g, '');

            // Add the new commas
            newInput.val(val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
            newInput.parent().find('input[type="hidden"]').val(parseInt(val));
        });
    }

    function hideThisInput(element) {
        element.attr('type', 'hidden');
    }
    function createNewInputFromOriginal(element) {
        var newInput = angular.element('<input type="text" class="' + element.attr('class') + '"/>');
        element.after(newInput);
        $compile(newInput);
        return newInput;
    }
    function clearInputClass(element) {
        element.attr('class', '');
    }

}
}());
/**
*添加逗号指令
*@名称空间指令
*/
(功能(){
"严格使用",;
有棱角的
.module('MyApp')
.指令(“添加逗号”,添加逗号);
/**
*@namespace addCommas
*@desc指令,用于在文本输入中添加逗号
*@memberofdirections
*/
函数addCommas($compile){
返回{
链接:链接
};
功能链接(范围、el、属性){
hideThisInput(el);
var newInput=createNewInputFromOriginal(el);
clearInputClass(el);
//格式值
newInput.bind('keyup',函数(){
//删除以前的逗号
var val=newInput.val().replace(/\D/g');
//添加新的逗号
newInput.val(val.toString().replace(/\B(?=(\d{3})+(?!\d))/g,“,”);
newInput.parent().find('input[type=“hidden”]').val(parseInt(val));
});
}
函数hideThisInput(元素){
attr('type','hidden');
}
函数createNewInputFromOriginal(元素){
var newInput=角度元素(“”);
元素。之后(新输入);
$compile(newInput);
返回新的输入;
}
函数clearInputClass(元素){
元素attr('class','');
}
}
}());

如果正确理解您的问题,为什么不使用element.parent呢。此外,有一个建议是,看看使用parent的角度格式化程序,然后就我所知,需要在元素上使用find,并且父元素在find-to-tag名称中仅限于angular文档所说的内容。因此,我不能使用parent然后找到[type=hidden]输入,而只能找到一个输入。如果正确理解您的问题,为什么不使用element.parent呢。此外,有一个建议是,看看使用parent的角度格式化程序,然后就我所知,需要在元素上使用find,并且父元素在find-to-tag名称中仅限于angular文档所说的内容。所以我不能使用parent然后找到[type=hidden]输入,而只能找到一个输入。