在提交时使用jquery将javascript变量发送到rails变量
因此,我在在提交时使用jquery将javascript变量发送到rails变量,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,因此,我在html.erb视图上生成了这个javascript变量,我想将它发送到rails变量表单submit。我知道我可以使用jquery或ajax来实现这一点,但我的尝试失败了。以下是我正在尝试的: Rails变量: <%= f.text_field :antennatime, :id => "antenna_time" %> “天线时间”%> 一些HTML: <input type="checkbox" id="Antenna" onclick="fun();
html.erb
视图上生成了这个javascript变量,我想将它发送到rails变量表单submit。我知道我可以使用jquery或ajax来实现这一点,但我的尝试失败了。以下是我正在尝试的:
Rails变量:
<%= f.text_field :antennatime, :id => "antenna_time" %>
“天线时间”%>
一些HTML:
<input type="checkbox" id="Antenna" onclick="fun();" value="1">
我的javascript:
<script>
var str = "This is Some Sample Text";
var ant = document.getElementById("Antenna").checked;
if(antenna == true){
$(document).ready(function(){
$("antenna_time").val(str);
});
}
</script>
var str=“这是一些示例文本”;
var ant=document.getElementById(“天线”)。已选中;
如果(天线==真){
$(文档).ready(函数(){
$(“天线时间”).val(str);
});
}
在我看来,这是行不通的。有人能告诉我使用jquery或ajax将javascript var
str
发送到rails变量:antennatime
的步骤吗?您需要比较ant
变量而不是antenna
,因为您已经在上面定义了if
条件,并且使用
将目标元素与id
namedantenna\u time
同时将所有代码包装在DOM ready中,最终代码如下所示:
$(document).ready(function(){
var str = "This is Some Sample Text";
var ant = document.getElementById("Antenna").checked;
if(ant == true){
$("#antenna_time").val(str);
}
});
看起来您拼错了一个变量,并且错过了jQuery选择器中的一个
#
:
var str = "This is Some Sample Text";
var ant = document.getElementById("Antenna");
if (ant.checked){
$(function(){ // same as $(document).ready()
$('#antenna_time').val(str);
});
}
为了清楚起见,如果使用
if
语句是为了检查表达式/求值-我会将您的.checked
逻辑添加到那里,因为它更清楚发生了什么。您的问题有点混乱。让我解释一下,以确保我理解:您有一个表单,其中一个字段由模型的属性填充,当设置复选框时,您希望使用javascript设置该字段的值
因此,实际上,您并没有设置一些“rails变量”,而是在将表单提交给服务器之前更改表单中的一个字段
因此,在这种情况下很简单,您只是在jquery中省略了#
。所以你必须写作
$('#antenna_time').val(str)
这会将字段设置为请求的值。但根据您的代码,只有在加载页面并单击复选框时,它才会这样做
这可能是你想要的,但我怀疑你
- 要在单击复选框时设置/取消设置它吗?(没有显示
函数——谈到神秘的名称)fun()
- 仅在提交前检查(可能会让用户感到困惑,为什么不检查服务器端复选框的值)
现在还不完全清楚为什么要覆盖字段的
id
,因为rails使用id/名称构建要发布到rails服务器的params散列,这可能会造成危险。模型中属性的输入字段的id
总是按照如下方式构建:\uu
,它是唯一的(且清晰),足以让我使用它。为混淆道歉。在以后的问题中,我会尽量澄清。感谢您对id
的输入。我会采纳你的建议。