2011-03-04 101 views
0

希望在jeditable(使用gem“on_the_spot”)后更新页面已更新。下面的工作更新页面,但脚本运行后,一旦字段不再可更新jeditable。帮助Rails 3 js

的application.js

$('.on_the_spot_editing').change(function() { 
    $.getScript('edit.js'); 
}); 

edit.js.erb

$("#items .on_the_spot_editing").change(); 
$("#edit_order_form").html("<%= raw escape_javascript(render('form')) %>"); 

控制器

respond_to do |format| 
    format.html 
    format.js if request.xhr? 
end 

字段

<%= on_the_spot_edit item, :price %> 

编辑 -

$(document).ready(function(){ 
    $('.on_the_spot_editing').data('ok', 'Ok').live('click', function() { 
    // tried $.delay(800).getScript('edit.js'); 
    $.getScript('edit.js'); 
    }); 
}); 

EDIT 2 - 如果数据-OK = “确定” 是HTML5标记,这会是正确的,看看用户点击 “确定” 按钮?

$('.on_the_spot_editing').data('ok', 'Ok').live('click', function() { 
    setTimeout(getIt, 500); 
}); 

function getIt() { 
    $.getScript('edit.js'); 
} 

回答

0

的第一句话:我不明白为什么你里面edit.js您需要重新触发change事件?不应该创建一个循环?如果......哈哈!

由于您重新呈现表单,您将失去所有事件绑定。您应该使用live bindings。不幸的是jEditable不使用live绑定。大概是因为它在编写jEditable时不存在,其次,我推测,因为如果您要使用JavaScript编辑单个字段,则不会再重新呈现完整的表单。

如果你仍然想重新渲染完整的表单,并且可能有这样做的有效情况(代码驻留在控制器上,请更新计数器/状态/什么不是):确保在您的form视图中,您再次加载on_the_spot.js。这将重新启用该表单。

希望这会有所帮助。

+0

确实如此。更新的脚本寻找“好”的数据attr。我遇到的问题是.getScript在jeditable提交给数据库之前会被调用,所以直到下面的编辑才看到更新。我已经尝试.delay脚本和.js,但都没有工作。你知道,如果jeditable有某种类型的回叫,我可以用它来触发剧本,或者有什么我可以做的吗? – pcasa 2011-03-04 17:38:59

+0

添加了第二个编辑。这是正确的吗? – pcasa 2011-03-04 18:43:51