1

ユーザーがコメントを残すことができるフォームがあります。ここに私の送信アクションがあります:

 <%= semantic_form_for([@project, step, step.comment_threads.build]) do |f| %>
    <%= f.text_area :body %>
    <%= f.actions do %>
         <%= f.action :submit, :label=>"Comment", :button_html => {:class=> "btn btn-small btn-primary commentSubmit", :disable_with => "Comment"} %>
    <% end %>
<% end %>

ユーザーが空のコメントを送信しようとすると、フォームの送信を無効にします。しかし、ユーザーがコメント ボックスにテキストを入力した後、再度有効にすることはできません。(コメントボタンをクリックしても、フォームが送信されません)。これは私のJavaScriptです:

$('.commentSubmit').click(function(){
  var comment = $(this).parents('form').children('.field').find('textarea').val();
  console.log('comment: ' + comment);
  if(comment.length == 0){
    alert('Cannot post an empty comment');
    $(this).parents('form').submit(false);
  }else{
    console.log('submitting form');
    $(this).parents('form').submit();
  }     

});
4

3 に答える 3

2

私がやったことは、ユーザーが空のコメントでフォームを送信しようとすると、false を返すことです。それは私にとって完璧に機能しました!

$('form.comment').submit(function(){
  var comment = $(this).children('.field').find('textarea').val();
  if(comment.length == 0){
    alert('Cannot post an empty comment');
    return false;
  }else{
    $(this).find('.commentSubmit').attr('disabled', true);
  }
});
于 2013-11-08T19:59:10.253 に答える
1

keyupテキストがボックスに入ったら、(または他のリスナー) を使用してボタンを有効にする必要があります。

参照:入力フィールドが空かどうかに応じて、jQuery の無効化/有効化送信ボタンまたはjQuery の有効化/無効化ボタン

于 2013-11-08T19:56:24.430 に答える
1

クリック時に検証する代わりに、keyup のリスナーを追加します。

送信ボタンを disabled=true に設定してから、以下を追加します。

$('textarea').on('keyup', function(event){
  if event.target.val().length > 0 {
    $('.commentSubmit').attr('disabled', false);
  } else {
    $('.commentSubmit').attr('disabled', true);
  }
});

これには、コメントを削除するときに再度無効にするという追加の利点があります。

于 2013-11-08T19:57:18.570 に答える