Frage

Ich benutze das jquery Block UI Plugin, meine Anforderung ist zu überprüfen, ob der Benutzer autorisierter Benutzer ist oder nicht, hier ist mein Code

<script language="javascript" type="text/javascript">

        $(document).ready(function () {
            $('#btnsubmit').click(function () {
                $.blockUI({ css: {
                    border: 'none',
                    padding: '15px',
                    backgroundColor: '#000',
                    '-webkit-border-radius': '10px',
                    '-moz-border-radius': '10px',
                    opacity: .5,
                    color: '#fff'
                }
                });
            });
        }); 

     function ajaxAuth() {
       //UserLogin.IServiceLogin.HelloWorldCC(OnSuccess, OnFailure);
         var usrname = document.getElementById('txtusrname').value;
         var pasd = document.getElementById('txtpassword').value;
         UserLogin.IServiceLogin.GetUseCred(usrname, pasd, onSuccess, onFailed);
     }

     function onSuccess(result) {
         setTimeout($.unblockUI, 0);
         var obj = jQuery.parseJSON(result);

         if (obj.name != "error" ) {
             document.getElementById('labusr').value = obj.name;
             document.getElementById('labpass').value = obj.passd;
             document.getElementById('labkey').value = obj.key;
             location.href = "DesignAPage.aspx";
         } else {
             $.blockUI({ message: $('#question'), css: { width: '350px'} });

//             $('#ok').click(function () {
//                 $.unblockUI();
//                 return false;
//             }); 
         }
     }

     function onFailed(result) {
         alert("failure");
     }

    </script>

das Problem ist also, während ich benutze $.blockUI({ message: $('#question'), css: { width: '350px'} }); es blockiert nur den Bildschirm für eine Sekunde und entsperrt den Bildschirm.

Jede Hilfe wird sehr geschätzt

War es hilfreich?

Lösung

Versuchen Sie, dies in der anderen Block zu tun

generasacodicetagpre.

Andere Tipps

Das Problem wird verursacht durch setTimeout($.unblockUI, 0);.Auch wenn Sie vielleicht denken, dass ein Aufruf dazu führen würde, dass der Code der angehängten Funktion sofort ausgeführt wird, ist dies nicht der Fall.Sie können dies überprüfen, indem Sie Folgendes ausführen:

setTimeout(function() {
    console.log('one');
}, 0);
console.log('two');

two wird vorher protokolliert one.Der Grund dafür liegt in der Art und Weise, wie JavaScript Timer intern behandelt.Da es Single-Threaded ist, läuft nie etwas gleichzeitig.Übergeben von 0 Millisekunden an setTimeout erzwingt nur die Ausführung der Funktion zum ersten verfügbaren Zeitpunkt.In diesem Fall ist das gleich danach $.blockUI wird aufgerufen.

John Resig hat einen schönen Artikel dazu bei http://ejohn.org/blog/how-javascript-timers-work/.

Ich habe Ihren Code ein wenig gehackt, aber das funktioniert.

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top