如何使我的JavaScript字符计数器在PHP中工作?

时间:2010-01-20 18:43:36

标签: php html forms textarea character

我有一个javascript字符计数器,我在文本区域内使用。它在普通的html中工作得很好,但是当我在php中的文本区域内放置完全相同的代码时,什么都没有。

这是html工作正常的时候:

<div id="counter">
  <span id="counter_airway" style="font-size:11px; color:#666666;">140 Character Limit</span>
</div>
<div id="grapvine_text">
<form name="CommentBox" method="post" action="Profile.php?id=<?php echo $prof->id; ?>">
  <textarea name='airway' class='round_10px' onkeyup="limit_length(this,140,'counter_airway');"></textarea>
</form>

这里是在我的php表单中实现的:

<div id="commentBoxBlog">
  <form name="CommentBox" method="post" action="Profile.php?id=<?php echo $prof->id; ?>">

      <?php
        if($auth->id == $prof->id) {
            echo "<div id='counter'>
              <span id='counter_airway' style='font-size:11px; color:#666666;'>140 Character Limit</span>
              </div><textarea name='airway' class='round_10px' onkeyup='limit_length(this,140,'counter_airway');'></textarea>
              <input type='submit' name='commentProfileSubmit' value='Exhale' class='post'/>";
        }
        elseif(!$auth) {
          echo "<textarea name='ProfileComment' class='round_10px' disabled>Please sign in to comment...</textarea>";
        }
        elseif($auth->id != $prof->id) {
          echo "<textarea name='ProfileComment' class='round_10px'></textarea>
            <input type='submit' name='commentProfileSubmit' value='Exhale' class='post' />";
        }
      ?>

  </form>
</div>

</div>

4 个答案:

答案 0 :(得分:2)

需要逃避引用,而不是:

onkeyup='limit_length(this,140,'counter_airway')

你可以这样做:

onkeyup='limit_length(this,140,\"counter_airway\")'

答案 1 :(得分:2)

你有一个引用嵌套问题。您使用单引号围绕onkeyup的{​​{1}}属性,但也在该javascript代码段中使用单引号。由于您在PHP字符串中使用双引号,因此请在JavaScript代码段中使用转义双引号(textarea)。

当然,将javascript分离到外部文件并绑定到\"事件会更好。您可以通过为您的textarea分配keyup并在DOM准备就绪后的某个时间调用以下内容来轻松完成此操作:

id

答案 2 :(得分:1)

PHP完全在服务器端运行。您的浏览器永远不会看到PHP的痕迹,只是PHP脚本生成的HTML代码。 Javascript完全在客户端工作。

您的HTML是手工编码还是HTML脚本,本质上并不重要。您需要查看的是脚本在浏览器的“查看源”模式下生成的HTML。请将其发布到您的问题中。

答案 3 :(得分:1)

您已将部分双引号更改为单引号。这将导致错误,例如:

onkeyup='limit_length(this,140,'counter_airway');'

将其与原作比较:

onkeyup="limit_length(this,140,'counter_airway');"

您需要转义引号而不是更改引号:

onkeyup=\"limit_length(this,140,'counter_airway');\"