この質問を投稿しようとしたとき、私は簡単な解決策を思いついたのです。
問題は、ユーザーが選択した言語に応じて、複数の言語で確認メッセージが必要になることでした。私は常にHTMLから特定の情報を取得するので、そのようにしようとしていましたが、この点で行き詰まりました。
正しいメッセージを含むtitle属性を使用した、ユーザー向けの簡単な削除ボタンを次に示します(この例では、テキストのみです。コードでは、正しい翻訳を含む変数です)。
<input type="submit" name="delete" value="Delete me" title="Are you sure?" />
次に、jQueryを使用してその行を取得し、次のように確認ボックスに表示します。
$("input[type='submit'][name='delete']").click(function() {
return confirm($(this).attr('title'));
});
ただし、これは、入力要素にマウスオーバーで表示されるタイトルが含まれていることを意味します。これは私が好きではありません。確認ボックスをキャンセルしてボタンをもう一度クリックすると空のメッセージが表示されるため、これを削除することは実際にはオプションではありませんでした。
とにかく、このアプローチ全体は、単純なテキスト行を取得するために私にはうまくいきませんでした。次に、$。get()について考えました。他のシナリオでは常に使用しているため、なぜ以前にそれを考えなかったのかわかりません。
したがって、これは、HTMLを処理したり、タイトルやその他の属性を読み取ったりすることなく、正しいテキストをJavaScriptに直接取り込むための一般的なソリューションとしてはかなり良いと思います。
$("input[type='submit'][name='delete']").click(function() {
$.get('something.php', {
action: 'getText',
variable: 'confirm_delete'
}, function(text) {
return confirm(text); // doesn't return instantly...
});
return false; // breaks the form action...
});
更新
わかりました。これをjQueryスクリプトの最後の部分に関する質問に戻します。$.get()情報を取得するのに少し時間がかかるようです。おそらくそれほど時間はありませんが、それは少しの時間であり、その間に、フォームはすでに送信されています。一番return false下のはこれを部分的に解決します。これは、最初に返されるものだからです。ただし、次の場合、デフォルトのボタンアクションがすでに停止しているreturn confirmため、[OK]をクリックしてもほとんど何も起こりません。return false
だから..私の質問は:を使用してテキストを取得する方法はあります$.get()か、そしてフォームの送信がロードされるまで待機するような方法はありreturn confirmますか?