在data-attribute中发送时,jquery回车不会保留

时间:2014-09-19 14:05:56

标签: javascript php jquery attributes

我正在尝试保留数据属性中的回车符。当属性被发送到index.php时,div不再识别换行符,并打印出一个大段落中的所有文本。

以下是包含属性的HREF外观:

 <?php

 $current .= 
 ($i == 1 && $sformat != 'table' && ( $key != $unique_id || $unique_id == '' ) )?"$count. 
 <a data-toggle=\"modal\" class=\"open-RestrictModal\" href='#my-restrictModal' 
 data-description=\"".$row["description"]."\" ">".${$key}."</a></dt>":'';

 ?>

这里是index.php中的javascript,它获取data-attribute并将其转换为javascript变量,然后将其发送到模态窗口:

 <script type="text/javascript">
   $(document).on("click", ".open-RestrictModal", function () {
    var myDescription = $(this).data('description');
    $(".modal-body #description").text( myDescription );
   });
  </script>

如上所述,问题是,当它以模态显示时,不再有任何回车。我需要获得那些回车。

这与我一直试图做的最接近:

http://social.msdn.microsoft.com/Forums/en-US/9131941d-232b-4592-9b13-c0348cf2a83d/how-can-i-send-data-containing-line-break-n-in-jquery-ajax?forum=scripting

这也是:

http://forum.jquery.com/topic/why-does-the-jquery-val-method-strip-carriage-returns-from-a-textarea-value

请帮忙。

1 个答案:

答案 0 :(得分:2)

您是否尝试过为#description元素设置white-space: pre或类似的风格?

否则,您必须使用HTML换行符替换回车符:myDescription.replace('\n', '<br>')

另外,我不会在HTML属性中输出文字回车(我认为这是禁止的XML)

所以你应该在PHP中进行替换:str_replace("\n", "<br>", $row["description"])

最后,您没有正确转发输出。如果您的描述字段包含引号符号"或其他特殊HTML字符,该怎么办?您应该始终使用适当的转义函数,例如htmlspecialchars()