我有以下代码:
$(".foo-form").submit(function (event) {
event.stopPropagation();
event.preventDefault();
$.ajax({
url: this.action,
data: $(this).serializeArray(),
type: 'POST',
dataType: 'json',
success: function (data, msg, resp) {
var $form = $("#second-form");
$form.show().dialog({
resizable: false,
height:400,
width: 600,
modal: true,
title: "Recommendation added",
buttons: [
{
text: "OK",
click: doOK
},
{
text: "Cancel",
click: doCancel
}
]
});
}
})
return false;
});
如果我在页面上向下滚动并提交表单,则在显示对话框时,它会将页面滚动到顶部。有没有办法改写这个?
不是解决方案的事情
.ui-dialog
课程的定位。它没有修改(使用谷歌的CDN)stopPropagation
,preventDefault
,和返回false。所以不是事件正在进行(即使它是,它也不是页面顶部的哈希链接)。使用jQuery 1.72和jQuery UI 1.8.21(每个版本的最新版本)。
答案 0 :(得分:4)
我在使用带有href标签的jQuery对话框时遇到了同样的问题,我修复了当我调用对话框时添加“event.preventDefault();”,例如:
$(".button").click(function(event){
event.preventDefault();
$("#dialog").dialog();
});
答案 1 :(得分:2)
我在使用带有href标签的jQuery对话框时遇到了类似的问题。我需要做的就是从a标签中删除href =“#”并解决了我的问题。
将<a href='#'>SHOW</a>
更改为<a>SHOW</a>
答案 2 :(得分:0)
尝试添加一个关闭函数并在其中使用preventDefault,为我工作
$form.show().dialog({
close: function (event) { event.preventDefault(); }
resizable: false,
etc....
});
答案 3 :(得分:0)
我找到的最好的解决方法是返回false;打开对话框后。
所以只要移动你的回报是假的;对话框功能之外。我知道这是一个老问题,但在这里没有看到这个决议,它对我有用。
你的stopPropagation,preventDefault()的问题,并返回false;是因为他们都在错误的地方。
我就是这样做的。
$("<div><p>" + text + "</p></div>").dialog({
modal: true,
resizable: false,
width: width,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
});
return false;
答案 4 :(得分:-1)
由于//Loop Starts
var singlePoi = {
"id": poiData[i].id,
"latitude": parseFloat(poiData[i].latitude),
"longitude": parseFloat(poiData[i].longitude),
"altitude": parseFloat(poiData[i].altitude),
"title": poiData[i].name,
"description": poiData[i].description,
"urlidle": poiData[i].urlidle,
"urlselected": poiData[i].urlselected
};
// Now do operations with singlePoi
//Loop ends
标记而滚动。
使用
<a href=""></a>
防止滚动到顶部