Puncte:-2

Jquery pentru a muta câmpul deasupra tabelului - modificări în timpul reîmprospătării paginii

drapel in

Am codul jquery de mai jos pentru a muta un câmp cu selecție multiplă și un buton deasupra tabelului.

jQuery(document).ready(funcție($){
  $('#views-form-resources-block-1 .form-item-ka-types').insertBefore($('#views-form-myblock-block-1 table'));
  $('#views-form-resources-block-1 #edit-actions--2').insertAfter($('#views-form-myblock-block-1 .form-item-ka-types'));
});

În acest cod, mută câmpul ka-types deasupra vizualizării myblock. Reprezentare picturală după cum urmează:

introduceți descrierea imaginii aici

Acest cod funcționează bine când încarc pagina la început. Dar când reîmprospătează pagina, selecția multiplă coboară și se afișează încurcat. din nou, când reîmprospătează pagina, funcționează bine. nu sunt sigur care este problema. Ajutor despre cum poate fi rezolvat acest lucru?

Kevin avatar
drapel in
Javascript-ul nu este scris într-un mod în care Drupal îl va atașa atunci când dom-ul se schimbă, așa că atunci când un formular se reconstruiește, acesta va fi pierdut. Probabil că este mai ușor să suprascrieți acest șablon Vizualizări pentru a muta un filtru decât pentru a-l forța cu jquery.
Kevin avatar
drapel in
În caz contrar, consultați documentele Drupal despre Comportamentele Drupal.
sonfd avatar
drapel in
De asemenea, aș recomanda să faceți acest lucru cu șablonul vizualizării yourjavas. Modificările JavaScript ca aceasta vor face ca conținutul paginii să se schimbe, ceea ce nu este un UX plăcut.Acest lucru ar putea chiar să vă afecteze negativ SEO, deoarece scorul [Cumulative Layout Shift (CLS)](https://web.dev/cls/) al unei pagini este un factor.
Hermann Schwarz avatar
drapel cn
Ați putea preciza, vă rog, ce înseamnă prima împrospătare? Un formular trimis? Deci, poate că DOM arată puțin diferit după trimitere.
Hermann Schwarz avatar
drapel cn
De asemenea, puteți verifica dacă consola instrumentelor web arată vreo eroare JS, astfel încât JS-ul dvs. nu este niciodată executat după trimiterea formularului (prima reîmprospătare)
Jiah avatar
drapel in
Pot realiza acest lucru folosind Drupal Behaviors.
Puncte:1
drapel in

Mai jos este soluția mea pentru asta:

(funcție($, Drupal) {
  Drupal.behaviors.searchResults = {
    atașați: funcție() {
      $('#views-form-resources-block-1 .form-item-ka-types')
        .insertBefore($('#views-form-myblock-block-1 table'));
      $('#views-form-resources-block-1 #edit-actions--2')
        .insertAfter($('#views-form-myblock-block-1 .form-item-ka-types'));
    }
  };
}(jQuery, Drupal));

@Kevin are dreptate. Când formularul se reconstruiește, modificările DOM se pierd. O mai bună înțelegere a comportamentelor Drupal linkul are explicații grozave și exemple de comportament Drupal.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.