【问题标题】:Execute js code before committing "submit" in ruby on rails在 ruby​​ on rails 中提交“提交”之前执行 js 代码
【发布时间】:2014-10-19 19:44:39
【问题描述】:

我似乎无法制作我在神奇 SO 上找到的旧 js 脚本。

<div class="form-actions">
    <%= f.button :submit, class:"btn btn-success create-campaign" %>

  </div>

这是我的提交按钮。但是有一个问题。

<div class="message-div" id="textField" contenteditable="true" maxlength="180"></div> 
<%= f.input :message ,as: :text,as: :hidden  ,input_html: { class: 'special', maxlength:'180' } %>

我使用 div 来获取我为它所做的输入,但我的表单从隐藏的文本区域获取它的输入。

所以我尝试在点击提交按钮时获取 div 的内容并将其写入文本区域。

但是我写的js脚本没有被执行。

$(document).on("click",".create-campaign",function(e){

console.log('asdasd');

var a = $('.message-div').html();


document.getElementById('.special').value = a;

});

这是代码。

当我将侦听器类更改为另一个按钮时,它可以正常工作(至少我看到控制台日志)但在按下提交按钮时不会。

我该怎么办?

干杯。

【问题讨论】:

  • 输入字段中的 myTextarea 类在哪里?
  • @urjitonrails 是的,对不起,我从 ctrl-z 复制了它,我猜我做的太多了。我会编辑问题,但这不是问题,因为代码甚至没有进入控制台部分。

标签: javascript jquery html ruby-on-rails ruby


【解决方案1】:

您需要防止触发默认提交操作:

$(".create-campaign").click(function(e) {
  e.preventDefault();
  console.info('asdasd');
  var a = $('.message-div').html();
  alert(a); // just to check that your data is there
  document.getElementById('.special').value = a;
  $("#YOUR_FORM_ID").submit();
});

【讨论】:

  • 刚试了一下,没用,没有阻止提交。我在js脚本标签之间的视图中调用了
  • 你用 'jQuery(document).ready(function() {});' 包装你的 JS ?您还应该将其移动到“app/assets/javascripts/”下的某个资产文件中,而不是直接将其包含在您的视图中。
  • 这可能是因为您调用 getElementById 时选择了“.special”类而不是调用 getElementsByClassName("special")[0].value 或 $(".special").val()
猜你喜欢
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多