我有一个用户完成流程的四步表格。每一步都是一个单独的部分。我想使用Ajax引导用户浏览表单,并根据流程中的步骤决定显示哪个部分。我可以根据点击的按钮判断它们处于哪个步骤。但是,一旦我添加了点击逻辑,下面的代码就不会在浏览器中呈现任何内容。当我拿出点击监听器时,事情很好。
$(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')) %>")
});
});
UPDATE:以下是浏览器无法呈现的响应
$(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=\"✓\" /><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=\"✓\" /><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=\"✓\" /><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=\"✓\" /><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=\"✓\" /><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't know\" />\n <input class=\"btn btn-success btn-category\" name=\"commit\" type=\"submit\" value=\"Don'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>")
});
});
答案 0 :(得分:0)
经过几天尝试解决这个问题后,我决定只在客户端(而不是Ajax)上使用Javascript来渲染表单中的四个步骤而不进行HTTP刷新。我没有使用四种不同的形式,而是将一种形式分解为四种不同的div。 Div的2 - 4被隐藏起来,我写了Javascript来听取过程中每一步的“提交”按钮的点击。在click事件中,我复制了字段输入中的值,并使用.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>