首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Ajax更新带换行符的文本区域?

如何通过Ajax更新带换行符的文本区域?
EN

Stack Overflow用户
提问于 2012-10-22 23:53:21
回答 4查看 1.5K关注 0票数 0

我正拼命尝试用Ajax更新一个文本区:

application.js:

代码语言:javascript
复制
$("#invoice_project_id").change(function() {
    var value=$(this).val();
    $.get('/invoices/get_recipient', {project_id= : value}  function(response) {
        $('#invoice_recipient').val(response);
    })
});​

get_recipient.js:

代码语言:javascript
复制
$('#invoice_recipient').val("<%= @recipient %>");

当包含换行符的值被插入到文本区域中时,代码停止工作。

例如,当我插入一个简单的线性值时,我在我的控制台上得到了这样的结果:

代码语言:javascript
复制
$('#invoice_recipient').val("123 Evergreen Terrasse");

这是正确的,并且工作得很好。

但是,当尝试插入一个包含换行符的值时,我在控制台上得到如下结果:

代码语言:javascript
复制
$('#invoice_recipient').val("65341 Bruen Brooks
East Charityville"); 

(请注意Brooks之后的换行符,它可能会导致JavaScript终止代码。)

有没有办法解决这个问题,比如从值中删除换行符?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-23 03:59:37

好了,多亏了this blog post,看起来我找到了一个解决方案。

而不是这样:

代码语言:javascript
复制
$('#invoice_recipient').val("<%= @recipient %>");

我现在这样做:

代码语言:javascript
复制
$('#invoice_recipient').val("<%= @recipient.to_s.gsub!(/\n/, '\n') %>");

gsub!()函数只是将换行符替换为其他换行符(?)而且,令人惊讶的是,它可以工作,尽管它有自己的一些弱点。

感谢大家在这里帮助我!

票数 3
EN

Stack Overflow用户

发布于 2012-10-23 00:03:39

嗯,看起来很奇怪,但我不明白你是怎么得到这个的:

代码语言:javascript
复制
$('#invoice_recipient').val("65341 Bruen Brooks
East Charityville");

您是否从其他server-side代码自动生成您的javascript代码?

(也许你的值太长了,导致了这种情况的发生,但我第一次看到这样的事情)

看起来我自言自语是因为你在这么做。因此,我的解决方案很简单,但可能会有帮助,为什么不先将长值放在一个变量中,然后将其传递给.val(),如下所示:

代码语言:javascript
复制
var longText = "this is a looooooooooooooooooooooooooooooooooooooooooooooooooong text that may cause problems"; 
$('#invoice_recipient').val(longText);

<%= @recipient %>获取longText的方式如下所示:

var longText = "<%= @recipient %>";

这样做可以避免任何可能生成导致javascript代码出现问题的server-side值的隔断线。

我为你做了这个:

http://jsfiddle.net/oscarj24/HssgJ/

正如你所看到的,一个长值在一个textbox中,与隔断线无关。

票数 0
EN

Stack Overflow用户

发布于 2012-10-23 00:06:53

您可以尝试:

代码语言:javascript
复制
$('#invoice_recipient').val(encodeURIComponent("<%= @recipient %>"));

不过,我不确定你要找的是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13015098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档