Cum să adaugi o pictogramă "în așteptare" pentru Ajax în interfața WordPress?

16 iul. 2013, 18:22:17
Vizualizări: 23.9K
Voturi: 6

Acesta este codul meu JavaScript pentru procesarea căutării:

jQuery(document).ready(function($){

    $('#searchsubmit').click(function(e){ 
        e.preventDefault();

        var searchval = $('#s').val(); // obține termenul de căutare

        // Adaugă spinner-ul înainte de a face cererea Ajax
        $('#searchsubmit').after('<span class="spinner is-active"></span>');

        $.post(
            WPaAjax.ajaxurl,
            {
                action : 'wpa56343_more',
                searchval : searchval
            },
            function( response ) {
                $('#results').empty();
                $('#results').append( response );
                // Elimină spinner-ul după ce primim răspunsul
                $('.spinner').remove();
            }
        );
    });

});

Întrebarea mea este cum să adaug o pictogramă de așteptare (cea care este folosită în panoul de administrare WordPress) lângă butonul de căutare (#searchsubmit) astfel încât utilizatorul să știe după click că se procesează? Cel mai bine ar fi dacă aș folosi doar JavaScript în codul meu JS existent postat aici.

1
Comentarii

Doar o sugestie: Dar ai putea schimba background-ul CSS al butonului de căutare să fie cercul de încărcare AJAX. Acea imagine este un GIF și se află undeva în wp-includes/. Poate folosind .addClass() sau .css()

Vigs Vigs
16 iul. 2013 18:32:35
Toate răspunsurile la întrebare 4
1

Puteți folosi clasa încorporată spinner:

Adăugați clasa în HTML unde doriți să apară spinner-ul, de exemplu după butonul de căutare:

<button type="button" id="searchsubmit">Buton Căutare</button>
<span class="spinner"></span> <!-- Adăugați această clasă spinner unde doriți să apară-->

În jQuery ar trebui să adăugați clasa is-active spinner-ului imediat după evenimentul de click; apoi în răspunsul post-ului ajax eliminați clasa is-active:

jQuery(document).ready(function($) {

    $('#searchsubmit').click(function(e){

        e.preventDefault();

         $(".spinner").addClass("is-active"); // adăugați clasa is-active spinner înainte de postarea Ajax

        $.post(
            WPaAjax.ajaxurl,
            {
                action : 'your_action',
                data : data
            },
            function( response ) {

                 $(".spinner").removeClass("is-active"); // eliminați clasa după ce datele au fost postate

            }
        );
    });

});

Sper că acest lucru vă ajută. Aflați mai multe din documentația WordPress core

15 iul. 2019 18:59:29
Comentarii

Acest spinner nu este disponibil în frontend, este injectat doar în CSS-ul de administrare.

User User
26 nov. 2022 05:48:38
3
jQuery(document).ready(function($) {

    $('#searchsubmit').click(function(e){ 
        e.preventDefault();

        var $button = $(this);
        $button.addClass('disabled').after('<div class="load-spinner"><img src="http://domain.com/path/to/image.gif" alt="Indicator de încărcare" title="Se încarcă rezultatele..." /></div>');

        var searchval = $('#s').val(); // obține termenul de căutare

        $.post(
            WPaAjax.ajaxurl,
            {
                action : 'wpa56343_more',
                searchval : searchval
            },
            function( response ) {
                $('#results').empty();
                $('#results').append( response );

                $button.removeClass('disabled');
                $('.load-spinner').remove();
            }
        );
    });

});
16 iul. 2013 19:08:38
Comentarii

Un mic indiciu. WordPress are începând cu versiunea 4.2 un spinner integrat în nucleu, include clasa spinner. Exemple aici și fundal aici.

bueltge bueltge
24 iun. 2015 12:36:29

Există spinneri în nucleu de mult mai mult timp decât atât. Sunt foarte utile.

Jake Jake
24 iun. 2015 19:06:45

@Jake/@bueltge corect, dar niciodată în partea de front-end (nu în mod implicit). Acele scripturi/stiluri sunt doar în zona de administrare

User User
26 nov. 2022 05:48:31
1
jQuery(document).ready(function($){

    $('#searchsubmit').click(function(e){ 
        e.preventDefault();
        var self = $( this );

        var loaderContainer = $( '<span/>', {
            'class': 'loader-image-container'
        }).insertAfter( self );

        var loader = $( '<img/>', {
            src: GET_YOUR_BASE_URL + '/wp-admin/images/loading.gif',
            'class': 'loader-image'
        }).appendTo( loaderContainer );


        var searchval = $('#s').val(); // obține termenul de căutare

        $.post(
            WPaAjax.ajaxurl,
            {
                action : 'wpa56343_more',
                searchval : searchval
            },
            function( response ) {
                $('#results').empty();
                $('#results').append( response );
                loaderContainer.remove();
            }
        );
    });
});

Tot ce trebuie să faci acum este să obții calea de bază a URL-ului către wp-admin și codul ar trebui să funcționeze. Sper că acest lucru te ajută.

16 iul. 2013 19:08:46
Comentarii

Mică indicație. WordPress are începând cu versiunea 4.2 un spinner încorporat în nucleu, include clasa spinner. Exemple aici și fundal aici.

bueltge bueltge
24 iun. 2015 12:36:36
2
$(function($)
{
    $("#btnSubmit").click(function () 
    {
        //Setează flag-ul isValid pe True dacă un RadioButton din grupul de RadioButtons este bifat.
        var isValid = $("input[name=gender]").is(":checked");   
        //Afișează mesajul de eroare dacă niciun RadioButton nu este bifat.
        $("#spnError")[0].style.display = isValid ? "none" : "block";
    }),

    $('#contact_form').validate(
    {
        rules:
        {
            uname:
            {
                required:true,
                minlength:3,
                maxlength:15
            },
            uemail:
            {
                required:true,
                email: true,
                minlength:3,                    
            },
            upass:
            {
                required:true,
                minlength:3,
                maxlength:15
            },
            cpass:
            {
                required:true,
                equalTo:'#inputpassword'
            },
            uaddres:
            {
                required:true,
                minlength:3,
                maxlength:100
            },
            gender:
            {
                required:true
            },
            ucity:
            {
                required:true,
                minlength:2,
                maxlength:15
            },
            ustate:
            {
                required:true
            },
            uzip:
            {
                required:true,
                minlength:6,
                maxlength:6 
            }
        
        },
        messages:
        {
            gender:
            {
                required:''
            }
        },
        submitHandler:function(form)
        {
            event.preventDefault();

            var nameid  = $("#inputname").val();
            var emailid = $("#inputemail").val();               
            var passid = $("#inputpassword").val();
            var addid = $("#inputaddress").val();
            var genderid=$('#inputgender[name="gender"]:checked').val();
            var cityid = $("#inputcity").val();
            var stateid = $("#inputstate").val();
            var zipid = $("#inputzip").val();

            var link="<?php echo admin_url('admin-ajax.php'); ?>"
            var form_data=$('#contact_form');
            
            $.ajax({
                    url: link,
                    type: 'post',
                    data: 
                    {
                        action:'contact_form_data',
                        data:form_data.serialize()
                    },
                    beforeSend:function()
                    {
                            $('.loader').show();
                    },
                    success: function (response) 
                    {
                        msg="<div>"+response+"</div>";
                        $('#msg').html(msg);

                        console.log(response);
                        $("#contact_form")[0].reset();
                        $('.loader').hide();
                    }
                });

        }

    });
});
10 iun. 2021 12:56:49
Comentarii

Presupun că singura parte relevantă aici este $('.loader').show(); și $('.loader').hide();? Restul pare a fi o formă complet diferită de întrebare. De unde vine elementul loader?

Rup Rup
10 iun. 2021 17:53:48

După cum a menționat Rup, relația dintre întrebare și acest cod este neclară - dacă este într-adevăr un răspuns la întrebare, câteva propoziții care descriu cum abordează acest cod întrebarea ar putea fi de mare ajutor! Există multe sfaturi utile despre ce conține un răspuns bun în [ajutorul nostru]

bosco bosco
11 iun. 2021 08:42:51