我正在开发一个应用程序,其中包含一个包含学生列表的列表视图。当我点击学生时,应用程序应该提供一个预先填写该学生信息的表单,以供查看或编辑。它在模拟器中运行良好,但是当我在我的设备(iPad)上测试它时,点击学生的名字只会显示一个空白表单,但没有填充任何信息。
这是列表视图:
$.each(jsonData.students, function() {
myListContent += '<li id="'+ jsonData.students[i].id+'" style="background: #f0f0f0; border-left: solid 5px ' + jsonData.students[i].belt + ';"><a href="" onclick="checkStudent(this);">'+jsonData.students[i].firstname+' '+jsonData.students[i].lastname+ '<br>Last Seen: '+jsonData.students[i].lastseen+'</a></li>';
i++;
});
这是填充表单的代码:
function checkStudent(el) {
var id = $(el).closest('li').attr('id');
$.getJSON("students.php", function(data){
id--;
var mystudent = JSON.stringify(data);
var viewjsonData = JSON.parse(mystudent);
$('#view-firstname').val(viewjsonData.students[id].firstname);
$('#view-surname').val(viewjsonData.students[id].lastname);
$('#view-belt').val(viewjsonData.students[id].belt);
$('#view-lastseen').val(viewjsonData.students[id].lastseen);
$('#view-comments').val(viewjsonData.students[id].comments);
$('#view-facebook').val(viewjsonData.students[id].facebook);
$('#view-phone').val(viewjsonData.students[id].phone);
$('#view-gender').val(viewjsonData.students[id].gender);
$('#view-mathours').val(viewjsonData.students[id].mathours).this('refresh');
});
activate_subpage("#studentProfile");
};
我很困惑,因为它在模拟器中工作。任何提示将非常感激。感谢
答案 0 :(得分:0)
问题是Safari对链接很挑剔。如果未设置href值,则链接不起作用。因为在这种情况下,在这种情况下,您不需要将链接设置为指向任何页面,因为它只是一个onclick,将其设置为#
:
<a href="#" onclick="checkStudent(this);">
使用#
意味着当您点击链接时它不会去任何地方,但您必须确保您的onclick函数也返回false以防止页面向上滚动到顶部。
function checkStudent(el) {
...
return false;
}