最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Angular js remove leading & trailing spaces from the input textbox - Stack Overflow

programmeradmin0浏览0评论

See this Plunkr :

Type text as "_______what___ever_____" (without quotes & _ represents spaces.)

Angular is removing spaces (from front & back & not in between) from the model (which is my desired behavior), but my textbox is keeping the spaces.

how can I remove the spaces from the textbox also ? i.e. I want the textbox also to reflect the value in model.

Edit: Better explanation of my needs.

For Eg: If I typed "___What_Ever____" ( without quote & _ is space),

1) my textbox will show me same what i have typed i.e. "___What_Ever____"

2) while my model will show me "What Ever".

I want my textbox's value also to be as "What Ever".

HTML :

<!DOCTYPE html>
<html ng-app="app">

  <head>
    <link rel="stylesheet" href="style.css" />
    <script data-require="[email protected]" data-semver="1.9.0" src="//cdnjs.cloudflare/ajax/libs/jquery/1.9.0/jquery.js"></script>
    <script data-require="[email protected]" data-semver="1.0.7" src=".0.7/angular.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-controller="MyCtrl">
    <input type="text" ng-model="modelVal">
    <br>
    model value is "{{modelVal}}"
  </body>

</html>

JS :

angular.module('app', [])
  .controller('MyCtrl', function($scope) {
    $scope.modelVal="";

  })

See this Plunkr : http://plnkr.co/edit/YAQooPn0UERDI5UEoQ23?p=preview

Type text as "_______what___ever_____" (without quotes & _ represents spaces.)

Angular is removing spaces (from front & back & not in between) from the model (which is my desired behavior), but my textbox is keeping the spaces.

how can I remove the spaces from the textbox also ? i.e. I want the textbox also to reflect the value in model.

Edit: Better explanation of my needs.

For Eg: If I typed "___What_Ever____" ( without quote & _ is space),

1) my textbox will show me same what i have typed i.e. "___What_Ever____"

2) while my model will show me "What Ever".

I want my textbox's value also to be as "What Ever".

HTML :

<!DOCTYPE html>
<html ng-app="app">

  <head>
    <link rel="stylesheet" href="style.css" />
    <script data-require="[email protected]" data-semver="1.9.0" src="//cdnjs.cloudflare./ajax/libs/jquery/1.9.0/jquery.js"></script>
    <script data-require="[email protected]" data-semver="1.0.7" src="https://ajax.googleapis./ajax/libs/angularjs/1.0.7/angular.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-controller="MyCtrl">
    <input type="text" ng-model="modelVal">
    <br>
    model value is "{{modelVal}}"
  </body>

</html>

JS :

angular.module('app', [])
  .controller('MyCtrl', function($scope) {
    $scope.modelVal="";

  })
Share Improve this question edited Oct 17, 2016 at 9:09 Abdul Rehman Sayed asked Oct 17, 2016 at 7:51 Abdul Rehman SayedAbdul Rehman Sayed 6,6729 gold badges50 silver badges78 bronze badges 2
  • I'm not sure it's a good idea to remove leading and trailing spaces as the user is typing. – camden_kid Commented Oct 17, 2016 at 9:12
  • @camden_kid i am fine even if it happens on a blur or some other event. – Abdul Rehman Sayed Commented Oct 17, 2016 at 10:09
Add a ment  | 

2 Answers 2

Reset to default 4

Would this work? - Plunker

ng-blur doesn't work with your Plunker because the version of AngularJS you are loading (1.0.7) is quite old. I replaced it with the latest version (1.5.6). I also use ng-trim="false" to get the correct text input by the user.

Markup

<body ng-controller="MyCtrl">
    <input type="text" ng-model="modelVal" ng-change="change()" ng-blur="blur()" ng-trim="false">
    <br>
    model value is "{{newModelVal}}"
</body>

JS

angular.module('app', [])
  .controller('MyCtrl', function($scope) {
    $scope.modelVal="";
    $scope.change = function () {
      $scope.newModelVal = $scope.modelVal;
    }
    $scope.blur = function () {
      $scope.modelVal = $scope.newModelVal.trim();
    }
  })

You can do this,

<body ng-controller="MyCtrl">
 <input type="text" ng-change="modelVal = modelVal.split(' ').join('')" ng-model="modelVal">
 <br>
  model value is "{{modelVal}}"
</body>

DEMO

EDIT:

You can use ngTrim which is provided by Angular itself

 <input type="text" ng-trim="true" ng-model="modelVal">
 <br> model value is "{{modelVal}}"

DEMO

发布评论

评论列表(0)

  1. 暂无评论