使用 - 在角度js数据绑定中将多个空格替换为单个空格

时间:2017-05-03 07:08:29

标签: angularjs



var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.removeSpace=function(){
  $scope.name = $scope.name.replace(/\s+/g, ' ');
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.min.js"></script>
<div ng-controller="myCtrl">
<input name="txtName" type="text" ng-focus="true" ng-model="name"
 ng-change="removeSpace()" autocomplete="off" list="name"
 class="form-control" ng-minlength="2" ng-maxlength="50"
 ng-pattern="/^[a-zA-Z- ]*$/" placeholder="Name" required>
 </div>
&#13;
&#13;
&#13;

.html代码

 < input name="txtName" type="text" ng-focus="true" ng-model="name"
 ng-change="removeSpace()" autocomplete="off" list="name"
 class="form-control" ng-minlength="2" ng-maxlength="50"
 ng-pattern="/^[a-zA-Z- ]*$/" placeholder="Name" required >

.js文件代码

$ scope.removeSpace =函数(){
            $ scope.name =      $ scope.name.replace(/ \ s + / g,&#39;&#39;);
}

 O/p:- name :- atul              n          kumar

Error: $scope.name is undefined
当我在文本框中输入此名称时,

低于o / p,但更改事件不正确。我在名称之间输入二十个或更多空格然后给出错误。我想&#34; atul n kumar &#34;输出。然后不要将多个空间替换为单个空格。

2 个答案:

答案 0 :(得分:0)

如果您只想更换空格而不是标签或换行符,您可以这样做;

$scope.nam = $scope.nam.replace(/  +/g, ' ');

答案 1 :(得分:0)

我的代码中没有出现问题。

你可以看到这个jsBin,你可以看到它正常工作

https://jsbin.com/zexomineti/edit?html,js,output

但是,请注意我将removeSpace包含在一个名称存在的检查中,因为当名称仍然未定义时,可以调用ng-change,这会导致您看到的错误。

如果名称仍未定义,则无法在名称上调用替换。

所以:

$scope.name.replace(/\s+/g, ' ');

是:

if ($scope.name){
  $scope.name = $scope.name.replace(/\s+/g, ' ');
}