jQuery动态表单

jQuery动态表单,jquery,ruby-on-rails,coffeescript,formatting,conditional,Jquery,Ruby On Rails,Coffeescript,Formatting,Conditional,我正在使用jQuery创建动态表单。我只是让它在一个简单的层面上工作,并意识到我可能在做错事。我所拥有的代码在我更改表单值后可以工作(正如您所期望的),但在我第一次加载页面时不起作用: jQuery -> $(document).ready -> $("#subject_enrolled").change -> if ($("#subject_enrolled").val() is "0") $("

我正在使用jQuery创建动态表单。我只是让它在一个简单的层面上工作,并意识到我可能在做错事。我所拥有的代码在我更改表单值后可以工作(正如您所期望的),但在我第一次加载页面时不起作用:

jQuery ->
    $(document).ready ->
        $("#subject_enrolled").change ->
            if ($("#subject_enrolled").val() is "0")
                $("#subject_reason_not_enrolled").show()    
            else
                $("#subject_reason_not_enrolled").hide()
            return
        return
    return

我尝试了.live而不是.change(知道这将是一次性能上的成功),但无论如何都没有成功。所以我对下一步很好奇。我想我必须定义一个跟踪状态的函数,并将状态变量添加到每个条件选择/复选框中。这是最好的方法吗?我希望我能够通过jQuery计算所有的更改……但我开始认为这是一种糟糕的形式。

要在页面加载后立即运行代码,请创建一个检查条件的函数,例如:

toggleField = ->
    if $("#subject_enrolled").val() is "0"
        $("#subject_reason_not_enrolled").show()
    else
       $("#subject_reason_not_enrolled").hide()
    return

jQuery ->
    $(document).ready ->
        /**
         * Execute after load
         */
        toggleField()
        $("#subject_enrolled").on "change", ->
            /**
             * Execute after change
             */
            toggleField()
            return
        return
    return

谢谢,这就是我需要知道的。