2016-07-26 18 views
0

私は2つのブートストラップモーダルダイアログウィンドウを持っています。子のテキスト入力でenterを押すと、親のイベントも発生します。親に焦点を当てる最後のボタンは、子を作成するボタンでした。これにより、子はすぐに再作成されます。子モーダルダイアログのEnterキーを押すと、親モーダルダイアログ(すなわち、11とエッジ)で入力します。

私はいくつかの同様の問題を発見しました。これは、ダイアログのokボタンがデフォルトのsubmitボタンであるためボタン=タイプであることを確認します。私は、ボタンがボタンのタイプを持っていることを確認しましたが、問題は解決しませんが、クロムでうまくいきます。

ここでは、plunkerで起こっていることの例を示します。 これが最初のモーダルウィンドウです。

<script type="text/ng-template" id="myModalContent.html"> 
     <div class="modal-body"> 

     </div> 
     <div class="modal-footer"> 
      <button class="btn btn-primary" type="button" ng-click="shownewwindow()">New Modal</button> 
      <button class="btn btn-warning" type="button" ng-click="cancel()">Cancel</button> 
     </div> 
    </script> 

これは第2です。

<script type="text/ng-template" id="modal2.html"> 
     <div class="modal-body"> 
      <input type=textarea value="test" ng-keypress="keydown($event)" autofocus></input> 
     </div> 
     <div class="modal-footer"> 
      <button class="btn btn-default" type="button" ng-click="ok()">ok</button> 
      <button class="btn btn-warning" type="button" ng-click="cancel()">Cancel</button> 
     </div> 
    </script> 

ここには、ok、cancel、およびkeydownの機能があります。

$scope.ok = function() { 
    console.log("ok"); 
    $uibModalInstance.dismiss({completed: true}); 
    }; 

    $scope.cancel = function() { 
    $uibModalInstance.dismiss('cancel'); 
    }; 

    $scope.keydown = function(event) { 
      var enterKeyCode = 13; 
      $uibModalInstance.dismiss({completed: true}); 
    } 

入力が押されたときに繰り返し作成されてから子供を防ぐ方法上の任意のアイデアは、おかげでいただければ幸いです。

+1

誰かがあなたに何らかの答えを与えることができるようにコードを投稿する必要があります。 –

+0

私の謝罪は、ここでは何が起こっているの[plunker](http://plnkr.co/edit/smeHL3jXB64vLrIkGeTZ?p=preview)の例です。この例を作っている間にさらに検査すると、Enterキーが実際に子供の入力欄から来ていることがわかりました。 –

答えて

0

ボタンをクリックすると無効にしてください。

<button ng-disabled="aScopeVar" ng-click="setAScopeVarToTrue()">My button</button> 

子を作成した後に、aScopeVarをtrueに設定することを忘れないでください。

関連する問題