以下の内容はhttps://ti-tomo-knowledge.hatenablog.com/entry/2018/09/14/120957より取得しました。


safariでエンターによるformのイベントがうまく発火しない時の対処法


formのイベントをエンターで発火

Webサービスにおいて、入力した値を処理するためにformタグを使うことは多いでしょう。

<form>
    <input type="text">
    <button>送信</button>
</form>

基本的に上記のような構造で、buttonをクリックすることでイベントを発火させることになりますが、上記の構造の場合はinputタグにカーソルが当たっているタイミングでエンターボタンをクリックすることでイベントを発火させることができます。

buttonタグにクリックイベントなどを設定し、フォームの送信だけではなくJavascriptによる独自の処理を実行することも可能です。

他のブラウザでは上手くいくのにsafariだと上手く送れない

今回の主題でもありますが、このエンターによるフォームの送信に関してsafariでは上手く発火されないことがあります。
chromeやFirefoxでは上手くいくんですが。。。
スマホを使っていてもchromeがデフォルトのAndroidでは動作するのにsafariがデフォルトのiOSでは動作しないということもありえます。

ちなみにこの場合、clickイベントではなく、formにactionを指定してPOSTさせようとする場合は上手くいくことが多いです。
でもやりたいことはPOSTさせることではないですよね。



buttonのスタイルを確認

結論としては、buttonタグに何かスタイルが当たっていないか確認してみてください。
例えばボタンを明示的に表示していない場合、「display:none」などを設定していませんか?
そのようなスタイルを当ててしまうと、chromeでは問題ないですがsafariでは上手くいかないようです。

  • メディア: エレクトロニクス

  • 発売日: 2018/06/21
  • メディア: Personal Computers

  • メディア: Personal Computers




以上の内容はhttps://ti-tomo-knowledge.hatenablog.com/entry/2018/09/14/120957より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14