簡體   English   中英

在不使用.blur()的Javascript / AngularJS中關閉Safari中的IOS鍵盤

[英]Close IOS keyboard in Safari with Javascript/AngularJS without .blur()

我的問題:使用Safari移動版中的返回按鈕提交HTML表單時,我需要關閉IOS鍵盤。 我可以找到的所有解決方案都說使用element.blur()應該關閉鍵盤,因此我做了一個Angular指令來做到這一點。 但是,除非按Done,否則它似乎不起作用。 我嘗試過的一些示例:

form.on('submit', function () {
  var textfields = form.find('input');
  textfields[0].blur();
});



form.on('submit', function () {
  var textfields = form.find('input');
  textfields[0].focus();
  textfields[0].blur();
})



var defocusElement = angular.element('<input style="opacity: 0; width: 0" type="button">');

form.append(defocusElement);

form.on('submit', function () {
  defocusElement.focus();
})

有人可以推薦我可以嘗試的另一條途徑嗎? 所有這些解決方案都適用於Android。

使用keyCode 13(返回鍵)檢查onKeyUp事件並關閉該事件。

<input type="text" onkeyup="closeKeyboard(event)">

closeKeyboard:

var closeKeyboard = function(event){
    if(event.keyCode == 13)
         //code to close the keyboard
}

如果由於某種原因element.blur()不起作用,這將起作用:

function directive(_) {
   var directive = {
      restrict: 'A',
      link: function (scope, element) {
        var defocusElement = angular.element('<input style="opacity: 0; width: 0" type="button">');

        element.append(defocusElement);

        // Close keyboard on submit.
        element.on('submit', function () {
          defocusElement.focus();
        });

        // Handles return key on IOS Safari keyboard.
        element.on('keyup', function (event) {
          if(event.keyCode === 13) {
            defocusElement.focus();
          }
        });
      }
    };

    return directive;
  }

謝謝ayushgp!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM