gpt4 book ai didi

ruby-on-rails-3 - 防止用户导航和丢失更改的 Rails 3 表单助手?

转载 作者:行者123 更新时间:2023-12-04 16:01:52 28 4
gpt4 key购买 nike

如果用户在当前页面的表单中输入了某些内容,是否有 Rails 帮助程序或 Rails 方法来阻止用户离开当前页面?

我试图防止人们在表单中有未保存的更改时单击标题链接而丢失数据。

最佳答案

在提交表单之前,Rails 不知道它的状态,但是在这种情况下,您可以添加一些 javascript 来提供帮助。

$('#header > a').click(function(){
$('input').each(function(i){
if ( $(this).attr(value) != '' ) {
if ( confirm('are you sure you want to leave this form unfinished?') != 'true' ) {
alert('quitter!);
}
}
});
});

编辑:好的,所以只处理标题链接点击(就像你在你的问题中指定的那样),这是一个使用 onbeforeunload 的解决方案。整页源代码,因为我对其进行了测试以确保我为您提供了一些可以构建的内容:
<html>
<head>
<title>Foo</title>
<script>
window.onbeforeunload = function(){
var inputs = document.getElementsByTagName('input');
var unfinished = 'false';
for (var i=0; i<inputs.length; ++i) {
if ( inputs[i].value != '' ) {
unfinished = 'true';
}
}
if ( unfinished == 'true' ) {
return 'Are you sure you want to leave?';
}
}
</script>
</head>
<body>
<form>
<input name='foo'/>
<input type='submit'/>
</form>
<a href='/'>Leave</a>
</body>
</html>

当然,这不是特定于 Rails 的帮助程序,但您可以编写自己的帮助程序,将包含类似内容的脚本标记吐出到您的 View 中。您可能还希望放入特定于表单的检查,而不是只检查每个输入是否为空。我做过的每一种形式都是某种形式的美丽而独特的雪花。

关于ruby-on-rails-3 - 防止用户导航和丢失更改的 Rails 3 表单助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5088096/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com