文本区域输入中的控制字符( 、 等)不会立即更新
control characters ( , , etc) are not being updated in the textarea input immediately
我的第一个问题是,在文本区域中,如果我在选项卡为空并开始键入时,它所包含的值在字符串的开头没有't
字符。(无论在键入正常文本之前按了多少次制表键)。
第二个问题。在键入一些文本并点击选项卡后,'t
字符不会再次出现在值中。但是,如果我现在继续键入文本,那么文本区域中的值现在包含该位置预期的't
字符。如果我键入Enter,则不会出现'n
字符;但如果我继续打字,它会像以前一样出现吗?
如何处理这两个问题?
angular.module('myapp', [])
.controller('MainCtrl', function($scope) {
$scope.foo = {
txt: ''
};
$scope.kd = function(e) {
if (e.keyCode === 9) {
var ta = angular.element(e.target);
var val = ta.val();
var st = ta[0].selectionStart,
ed = ta[0].selectionEnd;
ta.val(val.substring(0, st) + ''t' + val.substring(ed));
ta[0].selectionStart = ta[0].selectionEnd = st + 1;
//console.log(ta.triggerHandler);
ta.triggerHandler('change');
e.preventDefault();
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.js"></script>
<div ng-app="myapp">
<div ng-controller="MainCtrl">
<textarea ng-model="foo.txt" rows="10" cols="75" ng-keydown="kd($event)"></textarea>
<br>
<br>
<pre>
{{ foo | json }}
</pre>
</div>
</div>
Angular会自动修剪输入值。在输入标签上设置ng-trim="false"
以禁用默认修剪。
ngTrim
如果设置为false,Angular将不会自动修剪输入。这输入[type=password]控件的参数被忽略,这将永远不要修剪输入。
(默认值:true)
angular.module('myapp', [])
.controller('MainCtrl', function($scope) {
$scope.foo = {
txt: ''
};
$scope.kd = function(e) {
if (e.keyCode === 9) {
var ta = angular.element(e.target);
var val = ta.val();
var st = ta[0].selectionStart,
ed = ta[0].selectionEnd;
ta.val(val.substring(0, st) + ''t' + val.substring(ed));
ta[0].selectionStart = ta[0].selectionEnd = st + 1;
//console.log(ta.triggerHandler);
ta.triggerHandler('change');
e.preventDefault();
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp">
<div ng-controller="MainCtrl">
<textarea ng-model="foo.txt" rows="10" cols="75" ng-trim="false" ng-keydown="kd($event)"></textarea>
<br>
<br>
<pre>
{{ foo | json }}
</pre>
</div>
</div>
相关文章:
- 使用Javascript更新输入框中的文本
- 以字符串形式读取量角器测试中的更新输入
- 如何动态更新输入值属性
- 当html选择/选项发生更改时,需要更新输入字段
- 用于更新输入的 Javascript 被占位符覆盖
- 更新输入类型=文本值或文本框控件调整大小事件
- AngularJS绑定模型以选择更新输入数字字段,最小值为最大值
- 从数据库填充的下拉菜单中更新输入字段
- 如何在拖动行时更新输入值
- 为什么在更新输入类型文本的值时,敲除不更改值属性
- 使用javascript将span更改为input(viceversa),然后AJAX更新输入
- 按键更新输入落后1步
- NG模型仅在使用谷歌地图自动完成时单击后更新输入
- Javascript更新输入字段(将光标放在输入中)
- 更新输入类型时间的值(重新渲染)并使用 React 再次关注元素
- Twitter TypeAhead.js不更新输入
- 主干更新输入创建新行
- 使用 href Jquery 的值更新输入
- 获取 IFrame 源,然后更新输入文本框
- 自动建议反应.js组件不会在渲染时更新输入样式