2011-04-26 13 views
1

salesforceクラスから値をjavascript変数に取得しようとしています。私はいつか私たちは持っていることによって、このための回避策を持つことができます知っているようになったためにグーグルの後salesforceの文字列リテラルエラーが終端されていません

caseUpdate.Description = "{!ac__c.C_Info__c}"; 

その単一ライン値と値を取得することができていますが、その複数行のテキストエリアならば、それは終端されていない文字列を与えるリテラルエラーhiddenフィールドを作成し、DOMを使用してdocument.getElement.Idを使用して格納します。しかし、私はボタンのクリックでこのコードを呼び出すので、私は入力テキストや隠しフィールドの値を作成することはできません。 これを行う手段を提供できる人は誰ですか?

おかげ Prady

答えて

0

それが原因で改行です。マージフィールドはエスケープされずに出力ストリームにレンダリングされ、CRLFが新しい行にプッシュしてJavaScript文字列を破棄することを意味します。 div/inputトリックを使用するか、Apexを使用して、フィールド内の\r\n<br/>または目的に最も適したものに置き換えます。また、「またあなたのJSの文字列を終了することに注意してください。

最も簡単な方法は、あなたの拡張機能で関数を含めるだけのことですし、次にあなたが

public String FixNewLine(String s) { 
    if (s != null) return s.replaceAll('\r\n', '<br/>').replaceAll('"', '\\"'); 
    return null; 
} 
+0

標準のsfページでは、divトリックを使用できません。document.getElementById( 'desc1 ").value =" {!ac__c.C_Info__c} "; var desc = document.getElementById( 'desc1 ")。value.replace(/ [\ r \ n] +/g、" "); alert(desc);これは同じエラーを返します – Prady

+0

いいえ、divトリックdiv要素内に値をレンダリングし、innerHTMLを使用して値を取得することです – mmix

1

は、あなただけのことができるはずボードを渡ってそれを使用することができますあなたがボタンにクリック時Javascriptを使用している場合、これはあなたのための任意の文字をエスケープします。標準のSalesforce JSENCODE()関数を使用します。

the documentationを参照してください。

0

私は同じ問題があったが、それを修正することができました!トリックはJですSENCODE関数。その基本的に{!JSENCODE(Obj.Field)} ";したがって、この関数でマージフィールドを置き換え、関数内でマージフィールド自体を入れ子にします。私のシナリオでは、私は最終的にopptyObj.Description =" {!JSENCODE(Case最初に私の設定されたオブジェクトとフィールドを呼び出して、データをマージしてデータを取り込みます。

関連する問題