在字符串中遇到换行符时,Javascript无法在Visual Force页面上工作
Javascript not working on a Visual Force page when new line character is encountered in a String
因此,我注意到VisualForce页面上的一段Javascript在某些情况下可以工作,而在其他情况下则无法工作。JS对我们拥有的一个自定义对象的textArea字段进行了一些操作。我意识到只要textArea字段中有换行符或回车符(''n和''r),JS就会崩溃。
因此,我最终在页面控制器中使用了replaceAll()方法,并在页面加载时从textArea字段中删除了所有这些字符。当它到达JS时,它已经是一个合法的字符串了。
在VF页面上:
<script language="JavaScript">
function someFunction() {
var leftOver = 220;
if('{!shippingAddress.Delivery_Requirements__c}'.length > 0){
leftOver -= '{!shippingAddress.Delivery_Requirements__c}'.length;
}
}
</script>
在控制器中:
//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', ' ');
发布这篇文章是为了提醒那些遇到JS为某些记录工作而不是为其他记录工作的人。
如果你知道它为什么会坏,一定要告诉我。
Visualforce页面javascript:
var jsSafeText = "{!JSENCODE(mergeField)}";
它正在中断,因为JavaScript不允许字符串中的文字换行。这可能会在允许断线的情况下修复它:
public String getDeliveryRequirements() {
return shippingAddress.Delivery_Requirements__c.replace(''r'n', '''r''n');
}
然后在VF页面中,从上面绑定到getter:
if('{!DeliveryRequirements}'.length > 0){
leftOver -= '{!DeliveryRequirements}'.length;
}
更新:
曼努布克的答案更好。但我认为正确的javascript语法应该是:
var deliveryRequirements = "{!JSENCODE(shippingAddress.Delivery_Requirements__c)}";
相关文章:
- 用于在Visual Studio中预览基于我的TypeScript的JavaScript的工具
- 使用HTML进行Visual Basic UI设计
- 用Java/Struts/Spring项目实现Visual Captcha
- 如何使Visual Studio自动清除Javascript控制台
- 如何在调试模式停止后查看Visual Studio 2015 Javascript控制台
- Visual Studio 2012:更改javascript注释样式
- Winjs.xhr、Visual Studio和脱机服务器
- Visual Studio展开方法和所有子作用域或仅折叠方法
- 使用源映射在Visual Studio中调试缩小的JavaScript
- 如何在每个动态创建的ImageButton周围包装超链接?Visual Studio
- 突然失去Visual Studio Typescript Intellisense
- Visual Studio代码未在Javascript中执行错误检查
- 正在将Visual Studio 2012 JavaScript Intellisense标记移动到单独的文件
- HTML文件中的智能Javascript建议在Visual Studio代码更新后没有日志程序工作
- Visual Studio 2015 Update 2-'中的TypeScript模块;要求'未定义
- Visual Studio代码错误-未能加载jshint库
- Knockout Force在设置新值时通知订阅者可观察到的值
- Visual studio 2012-使用javascript函数
- 如何使用Visual Force和Javascript在Salesforce中的自定义对象中获取自定义字段值
- 在字符串中遇到换行符时,Javascript无法在Visual Force页面上工作