こんにちは!
お世話になっていますm(_ _)m
今回のご相談はタイトルの通り
「aタグ要素をクリックしたときにリンクへ飛ぶ前に処理を挟みたい」という内容です。
以前までは以下の挙動で動いておりました。
【全て削除】をクリック→入力ダイアログが出る→正しいユーザー名を入力した場合にのみ処理
ruby
1<%= link_to clear_users_url(@user), onClick: "return pass();" do %> 2全て削除 3<% end %>
javascript
1function pass(){ 2 password = window.prompt("削除する場合はユーザーの名前を入力してください"); 3 if(password == null) { 4 return false; 5 } else if(password !== "<%= @user.name %>") { 6 alert("正しいユーザーの名前を入力してください"); 7 return false; 8 } else if(password == "<%= @user.name %>") { 9 return true; 10 } 11}
ところが、sweet-alertというgemを導入したところ形式が変わり、
公式サイトを見ながらアレコレしてみたものの、上記の処理ができなくなってしまいました。
function pass(){ swal({ title: "全てのデータを削除します", text: "削除する場合はユーザーの名前を入力してください", type: "input", showCancelButton: true, closeOnConfirm: false, animation: "slide-from-top", }, function(inputValue){ if (inputValue == null || inputValue !== "<%= @user.name %>") { swal.showInputError("正しいユーザーの名前を入力してください"); return false; } else if (inputValue == "<%= @user.name %>") { return true; } }); };
上記の場合だと、そのままリンク処理が走ってしまいます。
また、変数flagを用意して、
javascript
1 function pass(){ 2 var flag = 0 3 swal({ 4 title: "全てのデータを削除します", 5 text: "削除する場合はユーザーの名前を入力してください", 6 type: "input", 7 showCancelButton: true, 8 closeOnConfirm: false, 9 animation: "slide-from-top", 10 }, function(inputValue){ 11 if (inputValue == null || inputValue !== "<%= @user.name %>") { 12 swal.showInputError("正しいユーザーの名前を入力してください"); 13 flag = 0; 14 } else if (inputValue == "<%= @user.name %>") { 15 flag = 1; 16 } 17 }); 18 if (flag == 0) { 19 return false; 20 } else if(flag == 1) { 21 return true; 22 } 23 };
にすると、最初の値がそのまま適用されてしまうのか、どんな場合でもリンクが走りません。。
融通のききにくい使用ですが、何か方法が見つかりそう...で、見つかりません;;
何か解決策の思いつく方がいらっしゃいましたら、アドバイスいただけると助かりますm(_ _)m
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/15 05:49
2016/07/15 05:53