2011-04-22 96 views
1

我正在通过javascript注册php变量到html表单元素时出错。就像如果我的代码中有PHP变量$edu_notes,我赋予这个变量的值是如何从PHP变量中修剪不需要的换行符/换行符?

<textarea name="1_1_50" id="1_1_50" ></textarea> 

和我的JavaScript代码是一个HTML表单元素:

document.getElementById('1_1_50').value = "<?php echo $edu_notes; ?>"; 

$edu_notes的价值来自linkedin个人资料是:

"First Text Line 

Second Text Line" 

其第一行文本行和第二行文本行之间存在空行的空白。 和JavaScript提供了一个错误是

unterminated string literal 
"First Text line 

JavaScript是没有得到充分的值,因为空行的字符串。我已经尝试了一些PHP函数,如filter_var(),nl2br(),trim(),但没有解决这个问题。我也尝试通过(string) $edu_notes输入演员。

在我的源文件什么我得到请看下面的截图:

enter image description here

我做这种类型的功能,因为所有的表单元素是从数据库dynamicaly到来。

回答

1
document.getElementById('1_1_50').value = 
    '<?php echo str_replace("\n", "\\n", $edu_notes) ?>'; 
+2

欢呼声...感谢它的工作 – GitsD 2011-04-22 21:26:33

+1

@GitsD - 如果是您认为您的答案的那个,请点击该答案旁边的投票记录下方勾选的复选标记。 – 2011-04-22 21:34:03

+0

我试图点击这个刻度线从塔起点..但它等待7分钟..这就是为什么延迟tick.sory ... – GitsD 2011-04-22 21:38:44

1

这是因为它需要在同一行中。在PHP中,将换行符替换为文字\n,它应该可以正常工作。如果它是单行文本框,请用空格替换换行符。

<?php echo str_replace("\n", " ", $edu_notes); ?> 

<?php echo str_replace("\n", "\\n", $edu_notes); ?> 
+0

'\ r \ n'怎么样? – 2011-04-22 21:28:43

2

尝试

document.getElementById('1_1_50').value = '<?php echo str_replace(array("\r", "\n", "%0a", "%0d"), "' + \"\\r\\n \" + '", $edu_notes); ?>' 

将与JS友好返回字符串替换任何换行符。

+0

@ karel请你能告诉我为什么我们在这种情况下使用数组.. ?? – GitsD 2011-04-22 21:28:12

+0

@GitsD这样,任何类型的回报将被转换。 – CookieMonster 2011-04-22 21:30:11

+0

@GitsD - 可以提供一系列搜索和替换值:http://php.net/manual/en/function.str-replace.php,因此您不必进行多次调用。 – 2011-04-22 21:31:04

0

尝试使用多行字符串在JavaScript构建。

例如,

var myStr = "line one \ 
line two"; 

要在PHP代码中重新创建此,用 '\' 和一个新行更换新线: -

"First Text Line 

Second Text Line" 

"First Text Line \ 

Second Text Line" 

这可能是在PHP中使用preg_replace完成: -

$edu_notes = preg_replace('#\n#', '\\\n', $edu_notes); 

希望这个帮助。