Kir*_*sov 1 javascript salesforce visualforce
所以我注意到我的VisualForce页面上的一段Javascript在某些情况下正在运行,而在其他情况下却没有.JS正在从我们拥有的一个自定义对象的textArea字段上执行一些操作.我意识到只要textArea字段中有一个新的行或回车字符(\n和\ r),JS就会破坏.
所以我最终在页面控制器中使用了replaceAll()方法,并在页面加载时从该textArea字段中删除了所有这些字符.当它到达JS时,它是一个合法的字符串.
在VF PAGE上:
<script language="JavaScript">
function someFunction() {
var leftOver = 220;
if('{!shippingAddress.Delivery_Requirements__c}'.length > 0){
leftOver -= '{!shippingAddress.Delivery_Requirements__c}'.length;
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
在控制器中:
//a fix for the text area field - '\n' and '\r' breaks JS on the VF page
shippingAddress.Delivery_Requirements__c = shippingAddress.Delivery_Requirements__c.replaceAll('\r\n', ' ');
Run Code Online (Sandbox Code Playgroud)
发布此信息是为了遇到JS工作某些记录而不是其他人的人.
如果您对它破裂的原因有所了解,请告诉我们.
Visualforce有一个名为JSENCODE的函数,用于编码文本和合并字段值,以便在JavaScript中使用.此功能也适用于换行符.
Visualforce页面javascript:
var jsSafeText = "{!JSENCODE(mergeField)}";
Run Code Online (Sandbox Code Playgroud)
它之所以被破坏是因为 JavaScript 不允许在字符串中出现文字换行符。这可能会修复它,同时允许换行:
public String getDeliveryRequirements() {
return shippingAddress.Delivery_Requirements__c.replace('\r\n', '\\r\\n');
}
Run Code Online (Sandbox Code Playgroud)
然后在VF页面中,绑定上面的getter:
if('{!DeliveryRequirements}'.length > 0){
leftOver -= '{!DeliveryRequirements}'.length;
}
Run Code Online (Sandbox Code Playgroud)
更新:
manubkk的答案更好。但我认为正确的 JavaScript 语法是:
var deliveryRequirements = "{!JSENCODE(shippingAddress.Delivery_Requirements__c)}";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2573 次 |
| 最近记录: |