2017-11-02 9 views
0

HTML入力に特定の文字が挿入されたことを検出するにはどうすればよいですか?

<div class="form-group"><label class="col-md-4 control-label" for="s1">URL</label> 
       <div class="col-md-4"><input id="url" name="url" type="text" ng-change="checkVal()" ng-model="url" placeholder="" class="form-control input-md"></div> 
      </div> 

Javascriptのバージョン1.6

var app = angular.module('urlGeneratorAvid', []) 

    .controller('macroControllerAvid',['$scope', function ($scope) { 
    $scope.needQuestionMark = true; 
    $scope.url = ''; 

    $scope.checkVal = function() { 
     console.log("Checking Value."); 
     if ($scope.url.includes('?')) { 
     console.log("Detected!"); 
     $scope.needQuestionMark = false; 
     console.log("Question Mark Variable: " + $scope.needQuestionMark); 
     } else { 
     $scope.needQuestionMark = true; 
     console.log("Question Mark Variable: " + $scope.needQuestionMark); 
     } 
    } 

    }]); 

ゴール

ディレクティブから変数needQuestionMarkを操作します。現在、指令から正しいデータを出力していますが、操作できないようです。

究極の目標

URLの入力を検出し、完全なURIは、2番目の疑問符ではなくアンパサンドが含まれていないので、疑問符が含まれています。

AngularJSの新機能ですので、間違った方向に行くと感謝します。

答えて

1

私はあなたが100%得るかどうかわかりません。

ngModel /入力値を検出して操作する。そのためにディレクティブを使用する必要はありません。

良いアイデアは、第二の選択肢は、HTML

ng-change example

第三に、NG-変更を加えることができるので、

$scope.$watch('$scope.textBox', function(newValue, oldValue) { 
    // do stuff to the text everytime it changes 
}); 

のように、コントローラ内部の時計を置くことです。これはコンポーネントのことですが、これは命令のようなものですが、Angularで作業する新しい方法です。お使いのコントローラについても

Components

。コントローラをasを使用してみてください。休耕するためにいくつかの便利なスタッフ下:)

Angular style guide

+0

ここさて、ちょうど速い更新。私は$ scope.watch()を使用するための指示ではなく、今日何か新しいことを学んだことを知っていませんでした。私は現在、自分のコードに取り組んでいるだけで、あなたが混乱していたものが何であるかを知りたかったので、私の質問がより明確になるようにしています。 – ARLCode

+0

さて、私はあなたの第2の選択肢であるng-changeに基づいて、それを理解しました。私はあなたの答えにマッチするようにソースコードで質問を更新し、後で人々が理解できるようにしました。ありがとうございました! – ARLCode

+0

あなたのことはとても親切です! あなたのコアで幸運を祈る:) – WitkowskiMichau

関連する問題