【问题标题】:How do I make my javascript character counter work inside php?如何让我的 javascript 字符计数器在 php 中工作?
【发布时间】:2010-01-20 18:43:35
【问题描述】:

我有一个在文本区域内使用的 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>

【问题讨论】:

    标签: php html forms textarea character


    【解决方案1】:

    需要转义引号,而不是:

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

    你可以这样做:

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

    【讨论】:

      【解决方案2】:

      您遇到了引用嵌套问题。您使用单引号将textareaonkeyup 属性括起来,但也在该javascript sn-p 中使用单引号。由于您对 PHP 字符串使用双引号,因此请在您的 javascript sn-p 中使用转义双引号 (\")。

      当然,最好将javascript分离成一个外部文件,并绑定到keyup事件。您可以通过将 id 分配给您的 textarea 并在 DOM 准备好后的某个时间调用以下命令来轻松完成此操作:

      var textarea = document.getElementById('myTextarea');
      textarea.onkeyup = function() { limit_length(this,140,'counter_airway'); }
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          您已将一些双引号更改为单引号。这会导致错误,例如这里:

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

          与原作比较:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-06-24
            • 1970-01-01
            • 1970-01-01
            • 2018-09-10
            • 1970-01-01
            相关资源
            最近更新 更多