Как мне заставить мой счетчик символов JavaScript работать внутри php? - PullRequest
0 голосов
/ 20 января 2010

У меня есть счетчик символов 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 ]

2 голосов
/ 20 января 2010

необходимо экранировать кавычку вместо:

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

Вы можете сделать:

onkeyup='limit_length(this,140,\"counter_airway\")'
2 голосов
/ 20 января 2010

У вас проблема с вложением цитат. Вы окружаете атрибут onkeyup textarea одинарными кавычками, но также используете одинарные кавычки внутри этого фрагмента JavaScript. Поскольку вы используете двойные кавычки для строки PHP, используйте экранированные двойные кавычки (\") в вашем фрагменте JavaScript.

Конечно, было бы даже лучше разделить javascript на внешний файл и связать его с событием keyup. Вы можете легко сделать это, назначив id для вашей текстовой области и вызвав следующее через некоторое время после того, как DOM будет готов:

var textarea = document.getElementById('myTextarea');
textarea.onkeyup = function() { limit_length(this,140,'counter_airway'); }
1 голос
/ 20 января 2010

Вы изменили некоторые из двойных кавычек на одинарные. Это приведет к ошибкам, например, здесь:

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

Сравнить с оригиналом:

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

Вы должны избегать кавычек, а не менять их:

onkeyup=\"limit_length(this,140,'counter_airway');\"
1 голос
/ 20 января 2010

PHP работает полностью на стороне сервера. Ваш браузер никогда не видит следов PHP, только HTML-код, сгенерированный вашим PHP-скриптом. Javascript работает полностью на стороне клиента.

Не важно, является ли ваш HTML написанным вручную или HTML-сценарием. Вам нужно посмотреть HTML-код, созданный вашим скриптом в режиме браузера «Просмотр исходного кода». Пожалуйста, напишите это в свой вопрос.

...