2016-06-14 12 views
0

私は検索ボックスを実装しようとしています。次は何が起こっている何のコード(HTMLとJSの両方)空のテキスト入力ボックスの値は何ですか?

HTML

<form> 
    <input type="text" ng-model="searchVar" class="searchbox"> 
    <input type="button" value="Search" ng-click="Search()" class="button"> 
</form> 

JS

var Search = function() { 

/* code to implement the table content loading part */  
//The following is what I have to filter out the table contents based on input in the text field 

    if (($scope.searchVar) && (tableContent[i].indexOf($scope.searchVar) !== -1)) { 
      ItemsToDisplay.push(tableContent[i]) 
    } 
    //Call function to load table 
} 

である私は、入力されたテキストの中にいくつかの文字列を入力すると、ということです検索アルゴリズムは正常に機能し、関連する項目だけが表示されます。ただし、検索ボックスの内容をクリアして[検索]ボタンをクリックすると、テーブルに何も表示されません。つまり、テキストフィールドがクリアされ、検索ボタンでクリックされると、ItemsToDisplayが空で、if条件が失敗したようになります。

これがなぜこのように説明できますか?そして私はこれをどのように解決することができますか?あなたが入力をクリアした場合

+0

フォーム制御値は常に文字列です。デフォルト値は空の文字列です。 AngularJSを使用しているようですが、そのためにタグを追加するとよいでしょう。 – RobG

+0

私は=== ""のチェックを試みましたが、それでも動作しません。空の文字列をチェックするにはどうしたらいいですか? – Rambabu

+0

デフォルト値は「未定義」です。あなたは一重引用符や二重引用符を使わずにundefinedを与えることができます – Guna

答えて

1

あなたのindexOf($ searchVar)する前に、searchVarは= '' であることを確認する必要があります!。そうしないと、後でアイテムが表示されません。提案は、Javascriptを枝

0

、$ scope.searchVarの値は未定義たwillbeとあなたの状態

if (($scope.searchVar) && (tableContent[i].indexOf($scope.searchVar) !== -1))   {...} 

はfalseになりますので、あなたはItemsToDisplayと何もアペンドにプッシュしていませんでした。

私はあなたが他の文を書くことをお勧め:

if (($scope.searchVar) && (tableContent[i].indexOf($scope.searchVar) !== -1))   {...} 
else { 
    ItemsToDisplay.push(tableContent[i]); 
} 
+0

これは検索中には機能しません – Hooch

0

場合、それはUは、と

if (($scope.searchVar) != undefined) 

または

if (typeof ($scope.searchVar) != 'undefined') 
0

を試すことができますに来るときあなたに大いに役立つでしょう本当に素晴らしいにconsole.log機能を持っていますINPUTボックスに何も入力しなければ、その値はUNDEFINEDになります。 入力が未定義の場合 if()条件をチェックインする必要があります。入力がある場合はの値を入力してロジックを書き込みます。

<form> 
     <input type="text" ng-model="searchVar" class="searchbox"> 
     <input type="button" value="Search" ng-click="Search()" class="button"> 
    </form> 

    var Search = function() 
    { 
     if ($scope.searchVar == undefined){ 
      //Do something, input box is undefined 
     } 
     if (($scope.searchVar) && (tableContent[i].indexOf($scope.searchVar) !== -1)) { 
          ItemsToDisplay.push(tableContent[i]); 
     } 
    } 
関連する問題