我正在使用笑脸助手来展示和存放笑脸。笑脸已显示在生成的表格视图中。点击笑脸,相应的文字显示不是笑脸。这是我在图书馆的代码,
public function get_smiles()
{
$CI =& get_instance();
$CI->load->helper('smiley');
$CI->load->library('table');
$image_array = get_clickable_smileys('images/smileys/', 'editor-textarea');
$col_array = $CI->table->make_columns($image_array, 8);
$array['smiley_table'] = $CI->table->generate($col_array);
return $array['smiley_table'];
}
在视野中,
<?php echo smiley_js(); ?>
<textarea name="editor-textarea" class="editor-textarea" id="editor-textarea"><textarea>
<ul>
<li>
<?php $smiles = $this->common->get_smiles(); ?>
<?php echo $smiles; ?>
</li>
我该如何解决这个问题?
笑脸js
<script type="text/javascript">
/*<![CDATA[ */var smiley_map = {};
function insert_smiley(smiley, field_id) {
var el = document.getElementById(field_id), newStart;
if ( ! el && smiley_map[field_id]) {
el = document.getElementById(smiley_map[field_id]);
if ( ! el)
return false;
}
el.focus();
smiley = " " + smiley;
if ('selectionStart' in el) {
newStart = el.selectionStart + smiley.length;
el.value = el.value.substr(0, el.selectionStart) +
smiley +
el.value.substr(el.selectionEnd, el.value.length);
el.setSelectionRange(newStart, newStart);
}
else if (document.selection) {
document.selection.createRange().text = smiley;
}
}// ]]>
</script>
经过测试,我发现它正常运行。
您无法将图像添加到文本区域。看看JS,它将添加笑脸的文本版本。例如,你可以看到'%-P'。
<a href="javascript:void(0);" onclick="insert_smiley('%-P', 'editor-textarea')"><img src="assets/images/smileys/tongue_rolleye.gif" alt="tongue rolleye" style="width: 19; height: 19; border: 0;"></a>
根据您的需要,您的工作是在提交时显示笑脸,因此如果它是一个评论部分,例如您需要在页面加载时解析它或通过提交时的AJAX回调。
您需要将表情符号的文本版本转换为正确的图像。你可以用CI function做到这一点。
parse_smileys([$str = ''[, $image_url = ''[, $smileys = NULL]]])
希望这可以帮助。
编辑:这是如何使用它。
echo parse_smileys(':-)', 'assets/images/smileys/');
这是解析你需要存储在哪里的笑脸的文本版本,然后它进入函数,你还需要传递笑脸图像的位置。这是在我的CI程序中工作,单个笑脸已经从上面的代码示例解析。