繁体   English   中英

在没有jQuery的情况下将文本添加到textarea的值

[英]Add text to value of textarea on blur without jquery

因此,我有一个文本区域,用于记录评论。 我正在尝试在输入评论时将输入评论的用户的身份附加到评论的末尾。

这是检查用户会话并获取用户名的PHP:

<?php 
    //getting username - displays John Doe
    $user = Mage::getSingleton('admin/session');
    $firstname = $user->getUser()->getFirstname();
    $lastname = $user->getUser()->getLastname();
    $append = " [name](by ".$firstname." ".$lastname.")[/name]";
?>

模糊时应附加到值的JavaScript:

<script>
    function addedcomment(){
        var commentby = document.getElementById("#history_comment").value;
        var commentby = commentby + '<?php echo $append; ?>';
        document.getElementById('#history_comment').value = commentby;
    }
</script>

输入注释的文本区域:

<textarea name="history[comment]" rows="3" cols="5" style="height:6em; width:99%;" id="history_comment" onBlur="addedcomment()"></textarea>

该代码完全按照此处显示的顺序和方式显示在页面上,因此PHP会在JavaScript出现之前设置$ append的值。 我在dom控制台中遇到三个错误:

Uncaught TypeError: Cannot read property 'value' of null
addedcomment
onblur

我正在使用的CMS可与Prototype配合使用,因此jQuery即使在noConflict模式下也不会一直工作(似乎是有选择地调用)。

我尝试过的事情:

Putting the JS below the textarea.
onblur vs onBlur
jQuery solution

这是因为要添加不需要的“ # ”符号。 document.getElementById()仅需要元素ID的名称( history_comment )。 该错误基本上是在告诉您,它无法获得不存在的东西的属性“ value ”,即,元素的ID为“ #history_comment ”。

您不需要jQuery解决方案,这里除了错别字外没有其他问题。

Uncaught TypeError: Cannot read property 'value' of null

那是因为没有ID为“ #history_comment”的元素。 唯一的ID为“ history_comment”。

同样,更改textarea的值可以通过更改与.value相反的.innerHTML来实现。 与从textarea读取值相同。

为什么要通过Javascript执行此操作? 通过PHP提交帖子后这样做会更好吗? 如果我多次“模糊”文本区域,则您现在的操作方式将添加的文本添加多次。

只是为了继续上述答案...

原生JavaScript api document.getElementById只是采用id,而Jquery需要使用诸如#、.等快捷方式表示。 在内部,它将使用相同的本机api,例如document.getElementById。

由于文本区域是输入元素,因此它将具有value属性,而对于其他文档元素(例如div),span table将具有innerHTML属性。 即使输入元素也将具有innerHTML属性,但只会返回空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM