Javascript 在重定向到单击的链接之前询问用户确认
我有一个很长的向导表单,就像我网站上的调查一样。我想编写一个jQuery函数,这样当用户意外单击页面上的任何链接(向导的“预览”和“下一步”按钮除外)时,会首先询问:是否确实要继续?然后它被重定向到他单击的链接,如果他单击取消,则不会发生任何事情 到目前为止,我所做的是对页面的每个链接(next&previw除外)添加了一个class link\u ridirect,这样我就可以抓取所有锚链接。停止重定向 jQuery函数如下所示Javascript 在重定向到单击的链接之前询问用户确认,javascript,jquery,Javascript,Jquery,我有一个很长的向导表单,就像我网站上的调查一样。我想编写一个jQuery函数,这样当用户意外单击页面上的任何链接(向导的“预览”和“下一步”按钮除外)时,会首先询问:是否确实要继续?然后它被重定向到他单击的链接,如果他单击取消,则不会发生任何事情 到目前为止,我所做的是对页面的每个链接(next&previw除外)添加了一个class link\u ridirect,这样我就可以抓取所有锚链接。停止重定向 jQuery函数如下所示 <script type="text/javascript
<script type="text/javascript">
<!-- HERE IS THE SEARCH FILTER -->
//<![CDATA[
var GLOBAL_NAMESPACE = {};
$(document).ready(function(){
GLOBAL_NAMESPACE.value_changed = true;
});
$(document).ready(function () {
$('.link_redirect').bind('click',function (e) {
e.preventDefault();
if (GLOBAL_NAMESPACE.value_changed){
var res = confirm('you have unsaved changes. Do you want to continue?');
if(res){
window.location.href = $(this).attr('href');
}else{
console.log('stay on same page...');
}
}
});
});
//]]>
</script>
所以我想做的是如何声明一个全局变量来跟踪所有字段的状态。因此,如果某个字段发生更改,请将其设置为true并调用prevent函数 这样做怎么样:
$('a').click(function(){return confirm("are you sure?");});
将其放置在html的底部,或页面的onload中,或在OP中建议的文档ready中
编辑
如果您只想在变量changesDetected为true时执行此操作,请按如下方式执行:
$('a').click(function(){return !changesDetected || confirm("are you sure?");});
这样做怎么样:
$('a').click(function(){return confirm("are you sure?");});
将其放置在html的底部,或页面的onload中,或在OP中建议的文档ready中
编辑
如果您只想在变量changesDetected为true时执行此操作,请按如下方式执行:
$('a').click(function(){return !changesDetected || confirm("are you sure?");});
您需要使用beforeunload事件。此事件在您从页面退出时处理
$(this).on("beforeunload", function () {
return 'are you sure';
});
如果需要,该事件将调用NotForPreview按钮和next,您可以解除绑定此事件处理程序
$('#myPreviewButtonId').click(function()
{
console.log('preview clicked');
$(this).unbind("beforeunload");
});
您需要使用beforeunload事件。此事件在您从页面退出时处理
$(this).on("beforeunload", function () {
return 'are you sure';
});
如果需要,该事件将调用NotForPreview按钮和next,您可以解除绑定此事件处理程序
$('#myPreviewButtonId').click(function()
{
console.log('preview clicked');
$(this).unbind("beforeunload");
});
看起来您已经有了中断默认A标记单击的代码,所以关键是检测字段是否已更改,以便在导航离开之前询问是否要保存 下面是一个JSFIDLE: 它向所有可编辑字段添加一个onchange事件,如果某些内容发生更改,它会将全局状态设置为true 如果用户输入一个字段,然后退出而不进行更改,则不会检测到任何更改
function setup() {
// bind the change event to all editable fields. Runs on load(or doc ready)
$("input,select").bind("change",function(e) {
GLOBAL_NAMESPACE.value_changed = true;
});
};
看起来您已经有了中断默认A标记单击的代码,所以关键是检测字段是否已更改,以便在导航离开之前询问是否要保存 下面是一个JSFIDLE: 它向所有可编辑字段添加一个onchange事件,如果某些内容发生更改,它会将全局状态设置为true 如果用户输入一个字段,然后退出而不进行更改,则不会检测到任何更改
function setup() {
// bind the change event to all editable fields. Runs on load(or doc ready)
$("input,select").bind("change",function(e) {
GLOBAL_NAMESPACE.value_changed = true;
});
};
功能${
$.fn.checkFileType=函数选项{
var默认值={
允许的扩展:[],
成功:函数{},
错误:函数{}
};
选项=$.extenddefaults,选项;
返回this.eachfunction{
$this.on'change',函数{
var值=$this.val,
file=value.toLowerCase,
扩展名=file.substringfile.lastIndexOf'.+1;
如果$.inarayExtension,则options.allowedExtensions==-1{
选项。错误;
$this.focus;
}否则{
选择。成功;
}
};
};
};
}jQuery;
$function{
$'image'。检查文件类型{
允许的扩展:['jpg','jpeg'],
成功:功能{
警惕“成功”;
},
错误:函数{
警告“错误”;
}
};
};
标签{
显示:块;
字体大小:粗体;
边缘底部:0.5em;
}
仅上传图像JPEG
功能${
$.fn.checkFileType=函数选项{
var默认值={
允许的扩展:[],
成功:函数{},
错误:函数{}
};
选项=$.extenddefaults,选项;
返回this.eachfunction{
$this.on'change',函数{
var值=$this.val,
file=value.toLowerCase,
扩展名=file.substringfile.lastIndexOf'.+1;
如果$.inarayExtension,则options.allowedExtensions==-1{
选项。错误;
$this.focus;
}否则{
选择。成功;
}
};
};
};
}jQuery;
$function{
$'image'。检查文件类型{
允许的扩展:['jpg','jpeg'],
成功:功能{
警惕“成功”;
},
错误:函数{
警告“错误”;
}
};
};
标签{
显示:块;
字体大小:粗体;
边缘底部:0.5em;
}
仅上传图像JPEG
如果确认函数的结果为false,则必须阻止对的默认操作
$(document).ready(function () {
$(".deleteJob").on("click", function (e) {
if (!confirm("Are you Sure want to delete!")) {
e.preventDefault();
}
});
}) 如果确认函数的结果为false,则必须阻止对的默认操作
$(document).ready(function () {
$(".deleteJob").on("click", function (e) {
if (!confirm("Are you Sure want to delete!")) {
e.preventDefault();
}
});
}) 所有链接都像锚一样吗?@nl-x是的!或
我最不感兴趣的是防止自动重定向的链接。所有链接都像锚一样吗?@nl-x是的!或者至少是我感兴趣的那些可以防止自动重定向的功能。是的,我写的功能非常完美。但是我想知道,如果表单中有任何更改,是否可以使用一个变量来检查表单的所有字段。如果有,那么停止用户重定向是的,我写的函数工作得很完美。但是我想知道,如果表单中有任何更改,是否可以使用一个变量来检查表单的所有字段。如果出现以下情况,则使用“离开此页面”、“停留在此页面”按钮,在卸载显示的standart浏览器对话框之前停止用户重定向。因此,当我返回字符串时,该字符串将出现在该消息对话框中。在卸载之前,显示带有“离开此页面”、“停留在此页面”按钮的standart浏览器对话框。所以,当我返回字符串时,这个字符串将出现在这个消息对话框中;thanx,这正是我想要的;