使用Javascript / JQuery设置Rails`hidden_​​field_tag`值

时间:2016-11-04 20:27:58

标签: javascript jquery ruby-on-rails

我正在尝试使用javascript或jquery让我的应用识别出div中有active类的hidden_field_tag作为{er} form_for <div id="q1" class="row gen-quest-div"> <h1>How long do you have?</h1> <div class="row answers"> <div id="q1-15" class="answer q1-answer col-xs-6 col-sm-3"> <%= image_tag 'min-15.jpg', alt: "Put 15 minutes on the clock!" %> <p>15 Minutes</p> </div> <div id="q1-30" class="answer q1-answer col-xs-6 col-sm-3"> <%= image_tag 'min-30.jpg', alt: "Put 30 minutes on the clock!" %> <p>30 Minutes</p> </div> <div id="q1-45" class="answer q1-answer col-xs-6 col-sm-3"> <%= image_tag 'min-45.jpg', alt: "Put 45 minutes on the clock!" %> <p>45 Minutes</p> </div> <div id="q1-60" class="answer q1-answer col-xs-6 col-sm-3"> <%= image_tag 'min-60.jpg', alt: "Put 60 minutes on the clock!" %> <p>60 Minutes</p> </div> </div> <!-- answers row --> </div> <!-- question div --> <div class="btn-primary" id="pre-submit">Pre Submit</div> <script> // Selection handling $( document ).ready(function() { $('.q1-answer').on('click', function() { $('.q1-answer').removeClass('active'); $(this).toggleClass('active'); }); $('.q2-answer').on('click', function() { $('.q2-answer').removeClass('active'); $(this).toggleClass('active'); }); $('.q3-answer').on('click', function() { $('.q3-answer').removeClass('active'); $(this).toggleClass('active'); }); }); // Form handling $('#pre-submit').on('click', function() { if ($('#q1-15').hasClass('active')) { console.log("So far this works."); // <<<<THIS LINE } }); </script> 的值。到目前为止,我有以下结构设置和工作:

div

通过在单击时标记.active成功选择console.log,并在选择答案时打印 <%= form_for @generator do |f| %> <div id="q1-form-field"> <%= hidden_field_tag :time, id: "q1-hf" %> </div> ... <div class="text-center"> <h3><%= f.submit "Submit" %></h3> </div> <% end %> 语句(仅用于测试目的......)。现在困难的部分是如何替换标记线以使表格识别答案。我的表单结构如下:

<input type="hidden" name="time" id="time" value="{:id=>&quot;q1-hf&quot;}">

如果不采取任何措施,隐藏字段将转换为html中的console.log,这可能是也可能不是问题。

并尝试了多种方法来替换javascript中的div语句,并根据.active document.getElementById("q1-hf").value = 1;为隐藏字段指定值。

首先,new:200 Uncaught TypeError: Cannot set property 'value' of null收到控制台错误,说$('#q1-hf').val(1);

或者,hidden_field_tag不会产生控制台错误,但也不会更改 if (width < 768) { for (i = 0; i < div.length; i++) { div[i].classList.remove("center"); } } else { div[i].classList.add("center"); } 值。

任何人都可以帮我解决这个问题吗?我对其他完成相同目标的结构持开放态度,但我已经查看了thisthis等其他帖子,这些帖子似乎表明这应该是可行的。

1 个答案:

答案 0 :(得分:1)

#include<stdio.h> #include<math.h> #define MOD 1000000007 // calculate (b^e) % MOD long long powerMod(long long b, long long e) { long long ret = 1; b %= MOD; while(e > 0) { if(e & 1) { ret = (ret * b) % MOD; } b = (b * b) % MOD; e >>= 1; } return ret % MOD; } int main() { long long tcase, n; scanf("%lld",&tcase); while(tcase--) { scanf("%lld", &n); long long result = powerMod(2, n) - 1; printf("%lld\n", result); } return 0; }

此代码使用<%= hidden_field_tag :time, id: "q1-hf" %>进行隐藏输入,因此您应该id="time"

选择它

如果您希望id为“q1-hf”,则应将其更改为 document.getElementById("time")

它将呈现为<%= hidden_field_tag 'q1-hf' %>,您可以按照问题中描述的方式访问它。