結論
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が落ちなくなった。