所以我在我的html.erb
视图中生成了这个javascript变量,我希望将其发送到rails变量表单提交。我知道我可以使用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>
出乎我的意料,这不起作用。有人可以显示我应该使用的步骤来使用jquery或ajax将我的javascript变量str
发送到我的rails变量:antennatime
吗?
答案 0 :(得分:1)
看起来你拼错了一个变量而错过了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
逻辑,因为它更清楚发生了什么。
答案 1 :(得分:1)
你的问题有点令人困惑。让我解释一下,确保我理解:你有一个表单,其中一个字段填充了模型的属性,当设置了一个复选框时,你想使用javascript设置该字段的值。
所以实际上,你没有设置一些“rails变量”,而是在将表单提交给服务器之前更改表单中的一个字段。
所以,在这种情况下很简单,你只是省略了jquery中的#
。所以你必须写
$('#antenna_time').val(str)
这会将字段设置为请求的值。但是根据你的代码,它只会在加载页面和单击复选框时执行此操作。
这可能是你想要的,但我会怀疑你
fun()
功能未显示 - 说出神秘的名字)请注意,要设置 rails变量,您必须向服务器发布内容。
目前还不完全清楚为什么要覆盖字段的id
,这可能是危险的,因为rails使用id / names来构建将params哈希发布到rails服务器。模型中属性的输入字段的id
总是按如下方式构建:<model-name>_<attribute-name>
这是唯一的(并且清晰的),只需使用它即可。
答案 2 :(得分:0)
您需要比较ant
变量而不是antenna
,因为您已将其定义为if
条件以上,并使用#
定位元素{{1}名为id
还将所有代码包装在DOM中,最终代码如下所示:
antenna_time