我有一个AngularJS(1.4)应用程序,我试图通过指令操纵输入类型=“数字”。 我必须使用type =“number”,因为在iOs上type =“tel”字符“。”。没有出现在键盘上,这使插入小数的数字不可能。JavaScript函数返回html对象,我该如何解析它?
目标是让用户在“。”之前插入最多3位数字。之后最多2位数字。点数不得超过一个。这是我在输入字段中想要的格式。 问题是,如果我通过我在指令中打印变量this.value,它不包含任何“。”。
这里的html代码:
<input required type='number' limit-to-number="3" number-of-decimals="2" ng-required="true" ng-model="invoice.price">
和这里的指令: “”
directive("limitToNumber", [function() {
return {
restrict: "A",
link: function(scope, elem, attrs) {
var limit = parseInt(attrs.limitToNumber);
var number_of_decimals = parseInt(attrs.numberOfDecimals);
var digit_array = [];
angular.element(elem).on("keydown", function(e) {
console.log(this);
});
}
};
}]).
我尝试不同的方法,主要的问题是,THIS.VALUE不包含。 例如,如果在表格中输入是 “12”:
console.log(this.value) // -> 12
但是,如果在表格中输入是 “...... 12 .....”:
console.log(this.value) // -> "" empty string
但我注意到,打印只是“这个”返回输入的整个HTML:
<input required type='number' limit-to-number="3" number-of-decimals="2" ng-required="true" ng-model="invoice.price" name="price" aria-invalid="false">
#shadow-root (user-agent)
<div id="text-field-container" pseudo="-webkit-textfield-decoration-container">
<div id="editing-view-port">
<div id="inner-editor">12.</div>
...
在使用id =“内的编辑器”股利我可以看到输入字段的精确值。现在的问题是,这是行不通的:
console.log(this.findElementById("inner-editor")); // -> Uncaught TypeError: this.getElementById is not a function
如何从对象“this”中提取div值?
this.value为空导致输入为类型numer –
您确定该类型编号支持点 – Armin
是的,因为我可以插入它们!问题是,在移动设备上使用type =“string”时,它不会显示数字键盘(糟糕的用户体验),并且iPhone上的type =“tel”无法插入点(功能不佳)。这就是为什么我试图使用type =“number” – ste