Wpis z mikrobloga

Pytanie do ninja programistów :D
Mam wtyczkę na WP w której jedno pole input jest "text" aby wpisać sobie nazwę/tytuł. Chciałbym to pole ograniczyć do wpisywania tylko kilku nazw i wpadłem na pomysł, że zmienie to pole na dropdown z listą już z góry ustaloną do wyboru.

Czy istnieje sposób na "wstrzyknięcie" w to miejsce innego inputa? Nie ma chyba możliwości nawet edycji tego miejsca z poziomu ftp. Blagam pomóżcie

#programowanie #js #php
  • 72
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@imdejv1: Dziwne ta funkcja powinna z automatu zmienić ten input na select. A jak dodasz console.log do tej funkcji to co wyświetla się w konsoli?

function convertInputTextToSelect() {
console.log('start')
if (jQuery('#_wc_booking_person_types_person_name_0').length)
  • Odpowiedz
@mat89c: Jak wkleiłem powyższy kod to w ogóle ta część strony jest nienaruszona czyli nie ma dropdown ani nic co pokazywało by ingerencje w to miejsce oraz nie wyświetla w konsoli żadnego błędu. tak jakby nie czytało w ogóle.
  • Odpowiedz
@imdejv1: Podmieniłeś tylko kod funkcji? Bo może wszystko usunąłeś i wkleiłeś powyższe. Tutaj cały kod:

convertInputTextToSelect();
jQuery('body').on("click", '#_wc_booking_has_person_types', function() {
  • Odpowiedz
@mat89c: Podmieniałem cały czas całość. Teraz wrzuciłem cały kod powyższy i działa to tak, że jak tworzę "nowe" to jest opcja wyboru. Po zapisaniu lub wejściu w istniejące pokazuje mi pola text. po kliknieciu checka: wyłącz i z powrotem włącz pokazuje już dropdown.
  • Odpowiedz
@mat89c: Jak włącze zakładkę to mam w konsoli zero błędów i komunikat "start". Po czym odklikuje "włącz", następnie klikam "włącz" i mam już wtedy dropdown i w konsoli pojawia się komunikat "replace".
  • Odpowiedz
@imdejv1: Czyli przy przeładowaniu strony nie widzi tego id:

if (jQuery('#_wc_booking_person_types_person_name_0').length) {
A jak przeładujesz stronę (nie klikaj w checkbox) to jaki id ma ten input text?
  • Odpowiedz
@mat89c: Albo usuń ten if i zobaczymy, czyli wklej ten kod:

convertInputTextToSelect();
jQuery('body').on("click", '#_wc_booking_has_person_types', function() {
  • Odpowiedz
@mat89c: id jest taki: #wcbookingpersontypespersonname0
Wkleiłem ten kod i nic się nie zmieniło. Nadal aby wywołać dropdowna trzeba klikną i odkliknąć.
Myślę, że może to jest przez to, że dodaje i usuwa przez to klikanie "włącz" klase: wcfm
head_hide , nie wiem kurcze.
  • Odpowiedz
@imdejv1: Ok, a dodaj ten kod:

jQuery('document').ready(function() {
convertInputTextToSelect();

jQuery('body').on("click", '#_wc_booking_has_person_types', function()
  • Odpowiedz
@mat89c: Działa! :)
jedyne co jeszcze mnie martwi to jest tam opcja na zasadzie "dodaje kolejne" gdzie wtedy zmienia klasy i wszystkie pliki w ten sposób, że dopisuje np.: wcbookingpersontypespersonname1 dla drugiej pozycji, wcbookingpersontypespersonname2 dla trzeciej i tak dalej. W tych pozycjach również wyświetla się option value z Twojego kodu, ale już nie przetwarza po zapisaniu na option
  • Odpowiedz
@imdejv1: Da się zrobić żeby nie trzeba było kopiować kodu 10 razy, tylko ciężko mi pisać tak na wyczucie. Jeśli chcesz skopiować ten kod 10 razy to będzie działać, nie będzie to spore obciążenie, tylko tak się nie robi, bo można to estetyczniej. Ale na dzień dzisiejszy uznajmy że jest to ok :)
  • Odpowiedz
@mat89c: Nie wiem jak to jest zrobione/jak twórcy to zrobili, ale ten przycisk to po prostu span z klasą: addmultiinputblock multiinputblockmanupulate wcfmfa fa-plus-circle
  • Odpowiedz
@imdejv1: Powinno zadziałać, jeśli coś się wywali to w konsoli będzie info

jQuery('document').ready(function() {
convertInputTextToSelect();


jQuery('body').on("click", '#_wc_booking_has_person_types',
  • Odpowiedz