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 回答