gpt4 book ai didi

javascript - Angularjs 创建输入掩码

转载 作者:行者123 更新时间:2023-12-04 12:50:16 24 4
gpt4 key购买 nike

我正在尝试创建一个指令来为我的输入创建自定义掩码。我知道我可以使用其他库,但有时我需要根据公司需要进行自定义输入(例如“OS.012-08765”),所以我宁愿创建自己的指令。

到目前为止,我能够在我需要的模式上格式化数字,但不能在输入上格式化,只能在模型上格式化。对于此示例,我将使用货币输入,因为它更易于使用(我认为)。这是我正在使用的代码:

function myMoney() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModelCtrl) {
ngModelCtrl.$formatters.push( formatInput );
ngModelCtrl.$render = renderViewValue;
ngModelCtrl.$parsers.push( parseOutput );


function formatInput( value ) {
value = formatNumber(value);
return value;
}
function parseOutput( value ) {
value = formatNumber(value);
return value;
}
function renderViewValue() {
element.html( ngModelCtrl.$viewValue );
}

function formatNumber(value) {
if(!value) {
value = '000';
}

var checkValue = value.replace(/[^0-9\.]/g, '');
if(checkValue != value) {
value = checkValue;
}

value = value.toString();

if(value.length < 3) {
value = ('000'+value).slice(-3);
}

var
firstChar = value.slice(0, value.length-2),
lastChar = value.slice(-2),
firstChar = Number(firstChar).toLocaleString(),
finalChar = '$'+firstChar+','+lastChar;

return finalChar;
}
}
}
}

这是一个带有代码的插件:http://plnkr.co/edit/UjZkPFL0V4FRrDUL9jAJ?p=preview


主要问题是输出在哪里,如果你开始在输入上打字,值没有掩码,只是数字。但是模型有合适的掩码。

因此,基于此,我有 2 个主要问题:

  • 首先:我想反转这些结果。我想在文本框中输入内容并在文本框中添加掩码,而模型只是普通数字(没有掩码)。
  • 第二:如果我创建一个按钮来更新模型上的值,它不会在掩码内进行格式化,而是保持纯文本。

我该如何解决这些问题?

最佳答案

尝试使用 ui 掩码,https://htmlpreview.github.io/?https://github.com/angular-ui/ui-mask/master/demo/index.html ,在 Mask Definition 字段下输入 AA.999-99999 以匹配您的模式。

<input type="text" 
ng-model="serviceOrderNumber"
ui-mask="AA.999-99999"
ui-mask-placeholder
ui-mask-placeholder-char="_"/>

关于javascript - Angularjs 创建输入掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39937604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com