繁体   English   中英

如何在我的.js.erb文件中使用单击逻辑来渲染不同的HTML,具体取决于所单击的按钮?

[英]How do I use click logic in my .js.erb file to render different HTML depending on the button which was clicked?

我有一个四步的表单,用户可以通过它完成一个过程。 每个步骤都是一个单独的部分。 我想引导用户使用Ajax遍历表单,并根据他们在流程中所处的步骤来决定显示哪个部分。 我可以根据所单击的按钮知道它们所处的步骤。 但是,一旦我添加了点击逻辑,下面的代码就不会在浏览器中呈现任何内容。 当我取出Click侦听器时,一切正常。

$(function(){
    $("#ask2-btn").click(function(e){
        $("div#ask").html("<%= escape_javascript(render('asks/ask3')) %>")
    });

    $("#ask3-btn").click(function(e){
        $("div#ask").html("<%= escape_javascript(render('asks/ask4')) %>")
    });

});

更新:这是浏览器未呈现的响应

$(function(){
    $("#ask2-btn").click(function(e){
        $("div#ask").html("<p class=\"lead\">Help with this issue<\/p>\n<ul><li class=\"profile\">Sam Smith<\/li><\/ul>\n<em>\"Expected outcome of the ASK?<\/em>\n    <form accept-charset=\"UTF-8\" action=\"/asks/125\" class=\"edit_ask\" data-remote=\"true\" id=\"edit_ask_125\" method=\"post\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"&#x2713;\" /><input name=\"_method\" type=\"hidden\" value=\"put\" /><input name=\"authenticity_token\" type=\"hidden\" value=\"2/vhLplWpnB5fSrkjgku27jzaJ0lwLK3GeOWchn6r8M=\" /><\/div>\n        \n        <input id=\"ask_category\" name=\"ask[category]\" type=\"hidden\" value=\"Advice\" />\n        <input class=\"btn btn-success btn-category\" name=\"commit\" type=\"submit\" value=\"Advice\" />\n<\/form>    <form accept-charset=\"UTF-8\" action=\"/asks/125\" class=\"edit_ask\" data-remote=\"true\" id=\"edit_ask_125\" method=\"post\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"&#x2713;\" /><input name=\"_method\" type=\"hidden\" value=\"put\" /><input name=\"authenticity_token\" type=\"hidden\" value=\"2/vhLplWpnB5fSrkjgku27jzaJ0lwLK3GeOWchn6r8M=\" /><\/div>\n        \n        <input id=\"ask_category\" name=\"ask[category]\" type=\"hidden\" value=\"Introduction\" />\n        <input class=\"btn btn-success btn-category\" name=\"commit\" type=\"submit\" value=\"Introduction\" />\n<\/form>    <form accept-charset=\"UTF-8\" action=\"/asks/125\" class=\"edit_ask\" data-remote=\"true\" id=\"edit_ask_125\" method=\"post\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"&#x2713;\" /><input name=\"_method\" type=\"hidden\" value=\"put\" /><input name=\"authenticity_token\" type=\"hidden\" value=\"2/vhLplWpnB5fSrkjgku27jzaJ0lwLK3GeOWchn6r8M=\" /><\/div>\n        \n        <input id=\"ask_category\" name=\"ask[category]\" type=\"hidden\" value=\"Support\" />\n        <input class=\"btn btn-success btn-category\" name=\"commit\" type=\"submit\" value=\"Support\" />\n<\/form>    <form accept-charset=\"UTF-8\" action=\"/asks/125\" class=\"edit_ask\" data-remote=\"true\" id=\"edit_ask_125\" method=\"post\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"&#x2713;\" /><input name=\"_method\" type=\"hidden\" value=\"put\" /><input name=\"authenticity_token\" type=\"hidden\" value=\"2/vhLplWpnB5fSrkjgku27jzaJ0lwLK3GeOWchn6r8M=\" /><\/div>\n        \n        <input id=\"ask_category\" name=\"ask[category]\" type=\"hidden\" value=\"Money\" />\n        <input class=\"btn btn-success btn-category\" name=\"commit\" type=\"submit\" value=\"Money\" />\n<\/form>    <form accept-charset=\"UTF-8\" action=\"/asks/125\" class=\"edit_ask\" data-remote=\"true\" id=\"edit_ask_125\" method=\"post\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"&#x2713;\" /><input name=\"_method\" type=\"hidden\" value=\"put\" /><input name=\"authenticity_token\" type=\"hidden\" value=\"2/vhLplWpnB5fSrkjgku27jzaJ0lwLK3GeOWchn6r8M=\" /><\/div>\n        \n        <input id=\"ask_category\" name=\"ask[category]\" type=\"hidden\" value=\"Don&#x27;t know\" />\n        <input class=\"btn btn-success btn-category\" name=\"commit\" type=\"submit\" value=\"Don&#x27;t know\" />\n<\/form>")
    });

    $("#ask3-btn").click(function(e){
        $("div#ask").html("<p class=\"lead\">Help with this issue<\/p>\n<ul>\n  <li class=\"profile\">Sam Smith<\/li>\n <li class=\"check\"><\/li>\n<\/ul>\n <hr/>\n <a href=\"/\">Add another ASK<\/a>")
    });

});

后试图算出这个数天,我决定简单地使用JavaScript在客户端(不阿贾克斯)呈现形式的四个步骤,而不HTTP刷新。 我没有使用四个单独的表格,而是使用一个单独的表格细分为四个单独的div。 Div的2-4最初是隐藏的,我编写了Javascript来侦听过程中每个步骤上“提交”按钮的单击。 在点击事件,我复制从外地输入的值,并使用的.text写值到屏幕给用户的印象它被保存到数据库中。

根据我的经验,我不确定Rails和Ajax是否可以很好地处理使用Ajax进行多次连续更新操作的复杂表单。

这是Javascript:

<script>
    $("#ask1-btn").click(function(e){
        findDescription();
        $("div#ask-list").toggleClass("hidden");
        $("div.ask1").toggleClass("hidden");
        $("div.ask2").toggleClass("hidden");
        e.preventDefault();
    });

    $("#ask2-btn").click(function(e){
        askStep3();
    });

    function askStep3(){
        findContact();
        $("div.ask2").toggleClass("hidden");
        $("div.ask3").toggleClass("hidden");
    };

    function findDescription(){
        var ask_description = document.getElementById("ask-desc-input").value;
        $("li#ask-description p.cname").text(ask_description);
    };

    function findContact(){
        var ask_contact = document.getElementById("ask-contact-input").value;
        $("li#ask-contact").text(ask_contact);
    };

</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM