【问题标题】:Disable Submit button until Input fields filled in RAILS禁用提交按钮,直到输入字段填写 RAILS
【发布时间】:2017-01-05 05:21:48
【问题描述】:

我想禁用提交按钮,直到我的输入字段被填写。我是 Rails 的新手,对 JS 和 Coffee 不太了解,我一直在尝试运行此功能,但它无法正常工作。我还尝试在客户端进行验证,但无法使其工作,代码通过但即使填写了所有字段,该按钮仍然未启用。由于某种原因,该按钮继续被禁用。

Html.haml

= simple_form_for @post, html: { multipart: true } do |f|
    - if @post.errors.any?
        #errors
            %h2
                = pluralize(@post.errors.count, "error")
                prevented this Post from saving
            %ul
                - @post.errors.full_messages.each do |msg|
                    %li= msg

    .form-group
        = f.input :title,:label => "Project Name", input_html: { class: 'form-control' }

    .form-group
        %label{:for => "Image"} image
        %input#image.form-control-file{"aria-describedby" => "fileHelp", :type => "file"}/

    .form-group
        %label{:for => "url-input"} Project Link
        %input#url-input.form-control{:type => "url", :value => "https://"}/

    .form-group
        %label{:for => "description"} Description
        %textarea#description.form-control{:rows => "3"}
        %small#descriptionHelp.form-text.text-muted Clear it up please

    %button#add.btn.btn-info{:type => "submit", :disabled => "disabled" } submit

提前致谢。

【问题讨论】:

  • 最初隐藏输入按钮。然后在 javascript 中编写一个函数,该函数将在输入字段的更改事件中显示按钮。

标签: javascript jquery ruby-on-rails forms


【解决方案1】:

您可以使用 javascript 或 jquery 来处理该验证。

$('#url-input, #description').on('blur keypress', function() {
  var urlInputLength = $('#url-input').val().length;
  var descriptionInputLength = $('#description').val().length;
  if (urlInputLength == 0 || descriptionInputLength == 0) {
    $('button').prop('disabled',true);
  } else {
    $('button').prop('disabled',false);
  }
});

因此,在提交表单之前确定需要哪些输入元素。使用这些元素添加blurkeypress 事件。使用 if 语句来确定按钮是启用还是禁用。如果输入的长度为空白 (0),那么您可以使用 .prop() 方法禁用按钮元素,或者如果输入中有文本则启用按钮。

【讨论】:

  • 由于某种原因,即使在填写了输入之后,该按钮仍然保持禁用状态!!代码正在通过,但我相信要么我没有在正确的位置发布 JS。因为我仍然很困惑是否将此代码粘贴到application.jsposts.coffee。即使我都尝试了,但没有任何效果!
  • %button#add.btn.btn-info{:type => "submit", :disabled => "disabled" } submit 上删除:disabled => "disabled"。在keypressblur 事件之外,禁用按钮$('button').prop('disabled',true);。这是 jquery,所以只要把它放在 application.js 中。
  • 对不起,我没看懂那部分。在keypressblur 事件之外,禁用按钮$('button').prop('disabled',true);
猜你喜欢
  • 2013-05-21
  • 2014-07-25
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多