onblur事件不';如果用户在文本字段中输入值并直接按下浏览器刷新按钮,则无效


onblur event doesn't work if user enter value in textfield and directly press browser refresh button?

我有ajax生成的输入字段

<input type="text" value="naeem" onblur="updateAttendee(1)" id="first_name_1" name="first_name_1" placeholder="First Name">

当用户输入数据并点击输入字段外的任何位置时,onblur都可以正常工作,但如果用户输入值并直接按下浏览器刷新按钮,onblr就不起作用

我的updateAttendee()函数:

function updateAttendee(attendee_id) {
    var first_name  = $("#first_name_"+attendee_id).val();
    var last_name       = $("#last_name_"+attendee_id).val();
    var email           = $("#email_"+attendee_id).val();

     $.ajax({
              type: "POST",
              data: "attendee_id="+attendee_id+"&first_name="+first_name+"&last_name="+last_name+"&email="+email,
              url: "<?php echo $registry->getObject('url')->getEventUrl();?>index.php?mod=eventsiteAjax&func=ajaxUpdateAttendee",
              dataType: 'json',
              success: function(data) {
                if(data['status'] == '1') {
                        $("#div_attendees").append(data['attendee_box']);
                  //success 
                } else {
                    // alert(data['error']);
                }

              }
        });
}

首先为输入焦点和模糊保留一个标志

$("#first_name_1").focus(function() {
    $(this).data('flag', 1);
});
$("#first_name_1").blur(function() {
    $(this).data('flag', 0);
});

然后,如果聚焦后尚未触发模糊,则在窗口卸载时手动触发输入框的模糊事件。

$( window ).bind("beforeunload", function() {
    if($("#first_name_1").data('flag') == 1){
        $("#first_name_1").trigger('blur');
    }
});