質問: $("#reg_seibetu option:selected").val(); installation.set("seibetu", seibetu); return installation.update(); }) .then(function(installation){ alert('登録完了しました'); }) .catch(function(err){ alert('登録完了できませんでした'); }); } ``` index.html ``` 年齢 10代 20代 30代 40代 50代 60代 その他 登録する ```
回答: ### onClick属性のイベントハンドラでデフォルト動作を抑止する リンクがクリックされた時には、ブラウザのデフォルト動作として自動で遷移が行なわれます。 これを防ぐにはonClick属性の場合、返り値に`false`を指定します。 ``` 登録する ``` ### addEventListener等で登録したイベントハンドラでデフォルト動作を抑止する Cordova・Monacaでは通常onClick属性などは使わず、JavaScriptは別ファイルにして`addEventListener`などを使うと思います。 ``` 登録する ``` この場合イベントハンドラへは引数でイベントオブジェクトが渡されます。このイベントオブジェクトの`preventDefault`メソッドを呼び出すとデフォルト動作が抑止出来ます。 ``` document.getElementById("regist").addEventListener("click", function(event){ event.preventDefault(); onRegisterBtn('id'); }, false); ``` (質問の例の`onRegisterBtn`はイベントオブジェクトを受け取るように出来ていません。よって上記のコードではイベントハンドラに無名関数を指定し、その無名関数から`onRegisterBtn`を呼ぶようにしています) ### JavaScriptで遷移する ブラウザのデフォルト動作を抑止すると、リンクをクリックしてもイベントハンドラが実行された後に何も起こりません。 JavaScriptで遷移させる必要があります。`location.assign`を使います。 ``` alert('登録完了しました'); location.assign("index.html"); ``` ### 現URLの履歴を消して遷移させる(置き換える) ユーザーに遷移を意識させたくなかったり、現在のURLが遷移後は無効になるような場合は`location.replace`を使い現URLに戻れなくします。 ``` alert('登録完了しました'); location.replace("index.html"); ```