在 onclick 之后使用 .val 在模拟器中有效,但在设备上无效



我目前正在开发一个应用程序,该应用程序具有包含学生列表的列表视图。当我点击学生时,应用程序应显示一个预先填写了该学生信息的表单,以供查看或编辑。它在模拟器中运行良好,但是当我在我的设备(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");   
     };

我很困惑,因为它在模拟器中工作。任何提示将不胜感激。谢谢

问题是Safari对链接很挑剔。如果未设置 href 值,则链接不起作用。因为在这种情况下,您不需要将链接设置为指向任何页面,因为它只是点击,请将其设置为 #

<a href="#" onclick="checkStudent(this);">

使用 # 意味着当您单击链接时,它不会转到任何地方,但您必须确保您的 onclick 函数也返回 false 以防止页面向上滚动到顶部。

function checkStudent(el) {
    ...
    return false;
}

相关内容

最新更新