window.print(); Repeating Load event

I tried to print something using window.print();

It is working, but whenever I click my print button for the second time without reloading the page (which is unnecessary),
the window print will appear again even though I already click on close button.
After the code runs until $(’#main’).show(); , it goes back to window.print(); again.
And if I tried for the third time, it will reload the window print 3 times and so on.
I’m not sure how to terminate the load event after I close the window for the first time.
I do not want the window to be reloaded again.

This is my code;

self.GetQrCode = function (obj) {
        var ID = obj.Id;
        $.ajax({
            url: '/QC/GetQrCode',
            cache: false,
            type: 'GET',
            contentType: 'application/json; charset=utf-8',
            data: { rejectsId: ID },
            success: function (rejectsId) {
                self.QrCode(rejectsId.QRCode);
                //$("#test").attr('src', rejectsId.QRCode);
                self.PrintQrCode();
            }
        });
    }


    self.PrintQrCode = function (obj) {
        $('#main').hide();
        $('#QrCodePrint').show();
        $("#test").on("load", function () {
            window.print();
            $('#QrCodePrint').hide();
            $('#main').show();
            Event.preventDefault();
        });
    }