LoginSignup
1
0

More than 5 years have passed since last update.

jsのreportValidity()を呼ぶとiosのsafariが落ちるバグの解消法

Last updated at Posted at 2019-04-14

結論

validationが画面に表示されているときにもう一度reportValidity()を呼ぶと落ちる。
よって、setTimeoutとかでくくってやればいい。

問題のコード

validate.js
$("#form").find("input, select, textarea").on('blur', function(){didBlurInput()});

function didBlurInput(){
  $("#form").reportValidty();
}

blurした時に直でこれを呼ぶとまだ画面上にvalidationを表示する文字が表示されている。
画面上にvalidationを表示する文字が表示されている状態でもう一度reportValidty()を呼ぶとiOSのsafariだとバグって落ちる

解決したコード

validate.js
$("#form").find("input, select, textarea").on('blur', function(){didBlurInput()});

function didBlurInput(){
  setTimeout(function(){
    $("#form").reportValidty();
  }, 100);
}

よって次のようにしてやればblurが終わってvalidationの表示が消えてからreportValidty()が呼ばれるのでsafariが落ちなくなった。

reportValidity()のリファレンス

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0