当字符串中遇到新行字符时,Javascript不在可视强制页面上工作
所以我注意到我的VisualForce页面上的一段Javascript在某些情况下起作用,而在其他情况下则不起作用。JS在一个自定义对象的textArea字段上执行一些操作。我意识到只要textArea字段中有新行或回车符(\n和\r),JS就会中断 因此,我最终在页面控制器中使用了replaceAll()方法,并在页面加载时从textArea字段中删除了所有这些字符。当它到达JS时,它是一个合法的字符串 在VF页面上:当字符串中遇到新行字符时,Javascript不在可视强制页面上工作,javascript,salesforce,visualforce,Javascript,Salesforce,Visualforce,所以我注意到我的VisualForce页面上的一段Javascript在某些情况下起作用,而在其他情况下则不起作用。JS在一个自定义对象的textArea字段上执行一些操作。我意识到只要textArea字段中有新行或回车符(\n和\r),JS就会中断 因此,我最终在页面控制器中使用了replaceAll()方法,并在页面加载时从textArea字段中删除了所有这些字符。当它到达JS时,它是一个合法的字符串 在VF页面上: <script language="JavaScript">
<script language="JavaScript">
function someFunction() {
var leftOver = 220;
if('{!shippingAddress.Delivery_Requirements__c}'.length > 0){
leftOver -= '{!shippingAddress.Delivery_Requirements__c}'.length;
}
}
</script>
发布这篇文章是为了提醒那些遇到JS为某些记录工作而不是为其他记录工作的人
如果您知道它为什么会中断,请告诉我。它正在中断,因为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)}";
它正在中断,因为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)}";
Visualforce有一个名为JSENCODE的函数,用于编码JavaScript中使用的文本和合并字段值。 此函数也适用于换行符 Visualforce页面javascript:
var jsSafeText = "{!JSENCODE(mergeField)}";
Visualforce有一个名为JSENCODE的函数,用于编码JavaScript中使用的文本和合并字段值。 此函数也适用于换行符 Visualforce页面javascript:
var jsSafeText = "{!JSENCODE(mergeField)}";
语法类似于+Jeremy Ross Sais:var deliveryRequirements=“{!JSENCODE(shippingAddress.Delivery_Requirements_____c)}”;语法类似于+Jeremy Ross Sais:var deliveryRequirements=“{!JSENCODE(shippingAddress.Delivery_Requirements_____c)}”;