0

今のところ、私のカウンターは明らかに常に350から始まります。正しい番号を使用したいのですが、ruby構文で「左」のjs変数を呼び出す方法がわかりません。

<%= form_for [@status], :url => user_status_path(current_user) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>
  <div class="field">
    <%= f.text_area :content, id:"status_box", maxlength:350, placeholder: "Status?" %>
  </div>
  <%= f.submit "Update", id:"status_btn", class: "btn btn-small btn-primary" %>

  <span id="counter">Characters left: 350</span>

  <script type="text/javascript">
    $('#status_box').keyup(function () {
        var left = 350 - $(this).val().length;
        if (left < 0) {
            left = 0;
        }
        $('#counter').text('Characters left: ' + left);
    });
  </script>
<% end %>

また、人々がキーを押したときにカウンターが変わるようにするにはどうすればよいですか?

4

2 に答える 2

1

ページの読み込み時にJavaScriptをトリガーして、その時点で残っている文字を計算することができます。

  <span id="counter">Characters left: 350</span>

  <script type="text/javascript">
    $('#status_box').keyup(function () {
        calculateCharactersLeft();
    });
    $(document).ready(function () {
        calculateCharactersLeft();
    });
    var calculateCharactersLeft = function(){
        var left = 350 - $("#status_box").val().length;
        if (left < 0) {
            left = 0;
        }
        $('#counter').text('Characters left: ' + left);
    }
  </script>

私は個人的には、erbに何かを注入するよりも、この方法でそれを行うことを好みますが、選択はあなた次第です。

実際、JavaScriptでハードコーディングするのではなく、textarea属性から最大長を取得する場合、最大長の値は1か所にしかなく、コードは適切でドライな状態に保たれます。

于 2013-01-30T01:49:16.567 に答える
1

次のように、ERBに残っている文字数を動的に変更する必要があります。

<span id="counter">Characters left: <%= 350 - @status.content.length %></span>

誰かがキーを押したときに発火させるには、keypressイベントではなくイベントにバインドしてみてくださいkeyup

于 2013-01-30T01:44:44.467 に答える