我有
<%= 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>
答案 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");
});
-
我希望提出的主要观点是,您要确保尽可能保持您的javascript不引人注目。这是什么?它基本上是你保持你的javascript绑定和放大器的地方。在你的观点
之外调用有几个原因可以解释为什么这是首选,不,推荐 - 最明显的原因是你最终会得到更多的modular应用程序。这使您可以灵活地创建&amp;在整个应用程序中使用您想要的所有功能,而不会将其限制为单个元素/功能
所以最重要的是,您需要重新考虑您的代码,以便在视图范围之外实际工作。如果您这样做,那么您将能够不显眼地绑定呼叫,如上所述,以使其成为一个更高效的系统