javascript - 关于 Rails 上下拉 ruby​​ 的更改事件

标签 javascript jquery ruby-on-rails

我正在创建一个网站,用户需要在注册页面填写性别和年龄,然后才能继续。我的代码是这样的:

<%= form_for(@user) do |f| %>
          <!--some other stuff-->

          <%= f.label :gender %>
          <%= f.select :gender, options_for_select(['M', 'F', 'N/A']), :id => "gender", :include_blank => "Please select..." %>

          <%= f.label :age %>
          <%= f.select :age, (17..75), :id => "age", :include_blank => "Please select..." %>
          <br>
          <br>
          <div class='center'>
            <%= f.submit "Save and continue", class: "btn btn-large btn-primary", :disabled => true %>
          </div>
      <% end %>
    </div>

生成的 HTML:

<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post"><div style="display:none"><input name="utf8" type="hidden" value="✓"><input name="authenticity_token" //other stuff></div>
          <label for="user_gender">Gender</label>
          <select id="user_gender" name="user[gender]"><option value="">Please select...</option>
<option value="M">M</option>
<option value="F">F</option>
<option value="N/A">N/A</option></select>

          <label for="user_age">Age</label>
          <select id="user_age" name="user[age]"><option value="">Please select...</option>
<option value="17">17</option>
// skipped this
<option value="75">75</option></select>
          <br>
          <br>
          <div class="center">
            <input class="btn btn-large btn-primary" disabled="disabled" name="commit" type="submit" value="Save and continue">
          </div>
</form>

Javascript:

$(document).ready(function () {
        $select_age = $("select#user_gender");
        $select_gender = $("select#user_age");

        var check_value = function () {
            alert("asdf");
            if ($select_gender.val() !== "" && $select_age.val() !== "") {
                $("input[name='commit']").removeAttr("disabled");
            }
        };

        $select_age.change(check_value()) // I've also tried onchange 
        $select_gender.change(check_value())
    });

每当我从下拉列表中选择一个新选项时,我都应该收到一条显示“asdf”的警报。但这并没有发生。为什么?

最佳答案

尝试下面的代码

$select_age.on("change", check_value()) // I've also tried onchange 
$select_gender.on("change", check_value())

关于javascript - 关于 Rails 上下拉 ruby​​ 的更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255925/

相关文章:

javascript - 刷新网页时 Firebase 当前用户未定义

javascript - 用于 css 转换的替代 promise() 函数

javascript - 猜谜游戏使用 jQuery 使用用户猜测更新 <li> 元素

javascript - 在 HTML 表格上拖动选择(带有 colspan/rowspan 的正方形/矩形部分)

ruby-on-rails - 为 Rails 中的不同操作设置单独样式表的最佳方式

javascript - 响应 js "unknown format"

javascript - Jquery 只显示/隐藏但只有一个实例

javascript - Firefox 陷入无限循环并忽略 window.print() 上的 css

javascript - 关闭子模态表单后父页面回发的问题

ruby-on-rails - 我如何将一个模型与另一个模型关联两次