我正在使用XDK编写我的第一个基于HTML5的应用程序。我已成功将其连接到基于.vb的简单本地Web服务,以进行模拟用户登录验证。成功登录后,我希望在视图中加载一个新的div,以便我在应用程序中的导航在外观和感觉上保持一致。
从主页面执行导航的工作方式如下:
<ul class="list widget uib_w_3 d-margins" data-uib="app_framework/listview">
<li class="widget uib_w_4" data-uib="app_framework/listitem">
<a class="icon user" href="#login_page">Login
</a>
</li>
<li class="widget uib_w_5" data-uib="app_framework/listitem">
<a class="icon pencil" href="#register_page">Register
</a>
</li>
<li class="widget uib_w_6" data-uib="app_framework/listitem">
<a class="icon settings" href="#settings_page">Settings
</a>
</li>
<li class="widget uib_w_7" data-uib="app_framework/listitem">
<a class="icon paper" href="#acc_management_page">Acc Managment
</a>
</li>
</ul><span class="uib_shim"></span>
以上所有内容都很有效,并且符合预期。点击/触摸登录按钮后,您将转到login_page
,并且您有username
和password
的输入字段。登录由jQuery脚本处理,该脚本通过vb.net Web服务验证信息。登录验证按预期工作。用户输入username
和password
后,单击“登录”按钮,onClick事件将调用jQuery脚本,如下所示:
function verifyInfo(){
var uName=document.getElementById("l_username").value;
var pWord=document.getElementById("l_password").value;
$.ajax(
{
type: 'POST',
url: 'http://localhost/TestWebService/Verify.asmx/UserVerify',
data: "{ \"username\":\""+uName+"\",\"password\":\""+pWord+"\"}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(data) {
if(data.d == "true"){
alert("Correct Login Credintials");
}
else{
alert("Incorrect Login Credintials");
}
alert(data.d);},
error: function(data){alert('Failed on :'+data.d);}
});
}
为了实现我想要的功能,我已将以下内容添加到此脚本中:
function verifyInfo(){
var uName=document.getElementById("l_username").value;
var pWord=document.getElementById("l_password").value;
$.ajax(
{
type: 'POST',
url: 'http://localhost/TestWebService/Verify.asmx/UserVerify',
data: "{ \"username\":\""+uName+"\",\"password\":\""+pWord+"\"}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(data) {
if(data.d = "true"){
alert("Correct Login Credintials");
//Added functionality
$('html,body').animate({
scrollTop: $("#acc_management_page").offset().top
});
//End of added functionality
}
else{
alert("Incorrect Login Credintials");
}
alert(data.d);},
error: function(data){alert('Failed on :'+data.d);}
});
}
如果我理解正确的话,应该触发动画调用以导航到适当的div,在我们的例子acc_management_page
中。这种导航方法可以从我的导航菜单中正常工作,但不能从脚本中运行。登录验证所有警报按预期触发,但acc_management_page永远不会滚动到。任何建议和/或解决方案将不胜感激。
谢谢!
答案 0 :(得分:1)
您是否尝试在锚标记中添加“id”属性。 jQuery正在寻找id而不是href。
答案 1 :(得分:1)
像魅力一样工作:)
$('.uib_w_4').click(function () {
alert('Now I will ask you if your login is ok ! to simulate Login Form');
if (confirm('Login with success !?')) {
letsAnimate();
} else {
// Do nothing!
alert('Login Failed');
};
});
function letsAnimate() {
$('html,body').animate({
scrollTop: $("#acc_management_page").offset().top
});
};
另外检查你的CSS文件,如果内容div没有正确设置(高度,位置固定/相对等),可能会产生一些意想不到的行为。
答案 2 :(得分:0)
我有同样的问题,但最后我找到了负责滚动的div类并设法使用css scrollTop它(我发现XDK滚动以相同的方式实现 - 我只是重置它to unscrolled params value):
$('.afScrollPanel').css('transform', 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)');