私のページの片側には、非常にシンプルなメールフォームがあります。反対側には、提案された電子メールのプレビューがあります。例えば:
ユーザーがフィールドに入力したら、キーアップのプレビューを更新したいと思います。私はそれを行うために小さなjs関数を書きました:
var email_previewer = function() {
var fields = [
{ input: $('input#editor_invitation_to'), preview: $('dt.to') },
{ input: $('#editor_invitation_message'), preview: $('#message') }
];
var perserve_linebreaks = function(text) {
var html = text.replace(/\r\n\r\n/g, "</p><p>"),
html = html.replace(/\r\n/g, "<br />"),
html = html.replace(/\n\n/g, "</p><p>"),
html = html.replace(/\n/g, "<br />"),
html = "<p>"+html+"</p>";
return html;
};
var sync_text = function(input, preview) {
var text = input.val();
if (input.is('textarea')) {
text = perserve_linebreaks(text);
}
preview.text(text);
}
// sync preview on page load
$.each(fields, function(index, field) {
sync_text(field.input, field.preview);
});
// create keyup events
$.each(fields, function(index, field) {
field.input.keyup(function() {
sync_text(field.input, field.preview);
});
});
}();
Railsが私のHTMLをエスケープして、がらくたのように見せたい場合を除いて、すべてがうまく機能します。
通常、これは問題ないことを私は知っています。raw
またはを追加するだけhtml_safe
です。しかし、マークアップはキーアップ(またはページの読み込み)に基づいて動的に構築されているため、ここではそれを行うことはできません。私はいくつかの簡単な解決策を逃していますか?回避策のアイデアはありますか?私の唯一のアイデアは、プレビューをiframeにロードすることです。これはまったく奇妙に思えます。
これは途方もなくイライラします。誰か助けてください!