繁体   English   中英

.focus()不适用于jQuery动态创建的元素

[英].focus() doesn't work on element created by jQuery dynamically

我之前曾使用下面的语句来关注表单中的第一个元素,并且效果很好。
$('form:first *:input[type!=hidden]:first').focus();
但是现在的问题是,当我以空的形式使用它(没有任何输入元素),并且在完成一些工作之后,我通过使用jQuery .html()在该表单中创建元素时,它不会关注任何元素。
这是我的表格:

<form id="edit_marks" method="post">
  <div id="display">
  </div>
</form>

这是我的jQuery AJAX:

function getData()
{
    var Semester = $('#Semester').find(':selected').val();
    var StudentID = "<?php echo $_GET['id'];?>";
    $.ajax(
    {
        type: 'POST',
        url: 'ajax_get_report_for_edit.php', 
        data: {Semester:Semester, StudentID:StudentID},
        dataType: 'text',
        success: function(data)
        {
            $('#display').html(data);
        },
        error: function(ts)
        {
            alert("AJAX Error: \n" + ts.responseText);
        }
    });
}
getData();
$('form:first *:input[type!=hidden]:first').focus();

您要在添加表单之前触发事件,因此需要在添加表单后触发事件。 将其添加到ajax成功中。 由于ajax是异步的,它可以随时完成,因此在完成之前它将从函数中返回。

function getData()
{
    var Semester = $('#Semester').find(':selected').val();
    var StudentID = "<?php echo $_GET['id'];?>";
    $.ajax(
    {
        type: 'POST',
        url: 'ajax_get_report_for_edit.php', 
        data: {Semester:Semester, StudentID:StudentID},
        dataType: 'text',
        success: function(data)
        {
            $('#display').html(data);
            $('form:first *:input[type!=hidden]:first').focus();
        },
        error: function(ts)
        {
            alert("AJAX Error: \n" + ts.responseText);
        }
    });
}
getData();

将焦点代码移到AJAX成功内部,因为AJAX表示它是异步调用。 因此,为了使focus工作在AJAX之后是要成功地添加它。

function getData() {
    var Semester = $('#Semester').find(':selected').val();
    var StudentID = "<?php echo $_GET['id'];?>";
    $.ajax({
        type: 'POST',
        url: 'ajax_get_report_for_edit.php', 
        data: {
            Semester:Semester, 
            StudentID:StudentID
        },
        dataType: 'text',
        success: function(data) {
            $('#display').html(data);
            $('form:first *:input[type!=hidden]:first').focus();
        },
        error: function(ts) {
            alert("AJAX Error: \n" + ts.responseText);
        }
    });
}
getData();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM