如何使用表单提交按钮进行onclick?

时间:2014-08-24 04:52:05

标签: javascript ruby-on-rails

我有

<%= form_for(@lesson_feedback, remote: true) do |f| %>

<%= f.select :feedback, options_for_select([["Great and helpful", "Great and helpful"], ["Clear and interesting but not what I'm looking for", "Clear and interesting but not what I'm looking for"], ["Okay but not interesting","Okay but not interesting"], ["Unclear or confusing", "Unclear or confusing"] ]) %>

<!-- Lesson ID -->
<%= f.hidden_field :lesson_id, :value => @lesson.id %>

<%= f.submit :class => "btn btn-success" , :value => "Send feedback" %>

<!-- :confirm => 'Your confirm message' -->
<!-- :onclick => "clearContents();" -->

<% end %>

特别针对以下行...

<%= f.submit :class => "btn btn-success" , :value => "Send feedback" %>

以上工作正常。但是,当我添加

<%= f.submit :class => "btn btn-success" , :onclick => "clearContents();", :value => "Send feedback" %> 

clearContents JS执行但数据不再被设置。 JS是:

<script>
function clearContents() {
    document.getElementById("feedback_module").innerHTML = "Thanks for your feedback! We appreciate you taking the time to leave us feedback, and we're doing our best to improve our content.";
}

</script>

1 个答案:

答案 0 :(得分:0)

如果没有答案,请按照以下方式处理:

-

<强>的Ajax

由于您正在使用Rails UJS Ajax driver,因此您希望从远程服务器捕获响应,从而允许您相应地填充表单上的反馈元素:

#app/assets/javascripts/application.js
$(document).on("ajax:success", "#your_form", function() {
   $("#feedback_module").html("Thanks for your feedback");
});

-

Unobtrusive

我希望提出的主要观点是,您要确保尽可能保持您的javascript不引人注目。这是什么?它基本上是你保持你的javascript绑定和放大器的地方。在你的观点

之外调用

有几个原因可以解释为什么这是首选,不,推荐 - 最明显的原因是你最终会得到更多的modular应用程序。这使您可以灵活地创建&amp;在整个应用程序中使用您想要的所有功能,而不会将其限制为单个元素/功能

所以最重要的是,您需要重新考虑您的代码,以便在视图范围之外实际工作。如果您这样做,那么您将能够不显眼地绑定呼叫,如上所述,以使其成为一个更高效的系统