Javascript preventDefault()被window.location否决
我在我的网站上有一个包含几个步骤的过程。要导航,我有“上一个”和“下一个”按钮。这些按钮是带有href属性的Javascript preventDefault()被window.location否决,javascript,jquery,window,href,preventdefault,Javascript,Jquery,Window,Href,Preventdefault,我在我的网站上有一个包含几个步骤的过程。要导航,我有“上一个”和“下一个”按钮。这些按钮是带有href属性的元素(访问上一步和下一步) “下一步”按钮用作进入下一步的门,但也用于在继续之前验证当前步骤中的某些字段 这就是单击“下一步”按钮时发生的情况: href值保存在变量$url中 preventDefault()阻止链接打开URL 进行了一些验证检查 如果返回“true”,则将在window.location中加载$url 对于某些步骤,我需要使用确认框再次检查用户。但问题来了: 问题: $
元素(访问上一步和下一步)
“下一步”按钮用作进入下一步的门,但也用于在继续之前验证当前步骤中的某些字段
这就是单击“下一步”按钮时发生的情况:
$url
中preventDefault()
阻止链接打开URL$url
$('#next_link').click(function(e) {
var url = $(this).attr('href');
e.preventDefault();
if(wiz_validate_required() && wiz_is_step_done()) {
window.location = url;
}
});
$('.dimensions-check').click(function(e) {
if(confirm('Have you specified the dimensions in millimeters?') == false) {
e.preventDefault();
}
});
当confirm()
返回“false”时,用户不应进入下一页。但是函数1的window.location
现在“否决”了函数2的preventDefault()
1。默认下一步按钮功能:
$('#next_link').click(function(e) {
var url = $(this).attr('href');
e.preventDefault();
if(wiz_validate_required() && wiz_is_step_done()) {
window.location = url;
}
});
$('.dimensions-check').click(function(e) {
if(confirm('Have you specified the dimensions in millimeters?') == false) {
e.preventDefault();
}
});
2。确认框功能:
$('#next_link').click(function(e) {
var url = $(this).attr('href');
e.preventDefault();
if(wiz_validate_required() && wiz_is_step_done()) {
window.location = url;
}
});
$('.dimensions-check').click(function(e) {
if(confirm('Have you specified the dimensions in millimeters?') == false) {
e.preventDefault();
}
});
尺寸检查在哪里进行
e、 preventDefault()仅取消“提交表单”按钮的默认操作。无论e.P如何,默认windows.location将始终重定向您
$(“#下一个链接”)。单击(函数(e){
var url=$(this.attr('href');
e、 预防默认值();
如果(wiz_validate_required()&wiz_is_step_done()){
//如果尺寸标注不提示{
//windows.location
//}否则调用维度提示
}
});代码>我会这样做。如果您对代码有任何疑问,请询问
//如果需要或不需要确认,可以为每个步骤更改这些设置
var需要确认=真;
var cb_message='是否已指定尺寸单位为毫米?';
$(“#下一个链接”)。单击(函数(e){
var url=$(this.attr('href');
e、 预防默认值();
如果(需要确认===true){
如果(确认框(cb\U消息)==真){
重定向窗口(url);
}
}否则{
重定向窗口(url);
}
});
功能确认对话框(cb\U消息){
如果(确认(cb_消息)==真){
返回true;
}否则{
返回false;
}
}
函数重定向窗口(url){
如果(wiz_validate_required()&wiz_is_step_done()){
window.location=url;
}
}
什么是尺寸检查?这个链接和下一个链接是否在某个地方共存?也许您应该创建一个使用确认框并返回true或false的函数,然后处理click事件,但您需要共享更多代码以获得直接答案!如果需要进行第二次检查,是否可以在步骤1中使用if语句不设置$url
?例如,如果(!secondCheckRequired){//set$url}
@idoteque dimensions check和next_link确实存在,并且在同一个按钮上是和ID和class。这就是问题所在。我需要将这两个函数分开,否则就没有问题了,我把所有的东西都放在一个函数中。没有更多的代码可以共享,因为只有这两个函数相互冲突。顺便说一句,wiz_validate_required()和wiz_is_step_done()函数没有给出问题,我已经检查过了。我认为你不必再次从JS重新定向。不要调用event.preventDefault(),应该停止调用。只需检查一下,我想您可能有另一个事件分配给该锚,因此您的默认设置不起作用
。如果您有$('a.mya')。on('click'..
和$('a')。on('click'..
两个事件都将被触发。如果是这种情况,您必须注销事件。