Návrh SW Návrh SW
Spouštíme individuální výuku programování! Zaváděcí slevy 799 Kč 499 Kč/60 minut se zkušeným lektorem! Výuka osobně Praha a okolí nebo po Skype celá ČR. O termíny a slevu si pište na [email protected].
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"

Diskuze: JQUERY select text

JavaScript JavaScript JQUERY select text American English version English version

Aktivity (1)
Avatar
niderle.l
Člen
Avatar
niderle.l:25.10.2018 8:59

Ahoj potřeboval bych poradit jak pomocí jQUERY udělat angulární directivu, která bude schopná označit text v text fieldu. Text se tam dotáhne a já ho potřebuji celý označit, ale nevím jak.

Zkusil jsem: S pomocí anguláru dělám directivu a tam jsem zkoušel už i konkrétní element.select a jiné selectory, ale nikdy mi to neoznačí daný text

Chci docílit: Snažím se docílit, aby potom co doplním nějaký text ze serveru, tak abych byl v text fieldu (input) daný value celé označit.

Předem moc děkuji za případnou pomoc či nasměrování.

 
Odpovědět 25.10.2018 8:59
Avatar
Odpovídá na niderle.l
Vladislav Ladicky:25.10.2018 11:11

Máš na mysli, že dotiahneš zo serveru do input type text nejakú hodnotu a keď užívateľ na ten vyplnený input klikne, tak sa označí celý text?

 
Nahoru Odpovědět 25.10.2018 11:11
Avatar
niderle.l
Člen
Avatar
Odpovídá na Vladislav Ladicky
niderle.l:25.10.2018 12:59

Ne, ze serveru mi přijdou data, která já naplním a potom potřebuji, když mám directivu na selekci, tak aby mně označil celá data. To value co jsem tam doplnil.

 
Nahoru Odpovědět 25.10.2018 12:59
Avatar
Odpovídá na niderle.l
Vladislav Ladicky:25.10.2018 13:27

Čiže sa to nemá označiť po kliknutí na input, ale samo, hneď ako sa načíta value inputu zo serveru?

 
Nahoru Odpovědět 25.10.2018 13:27
Avatar
niderle.l
Člen
Avatar
Odpovídá na Vladislav Ladicky
niderle.l:25.10.2018 13:32

dá se říci že ano, nevím co je dříve, zda tato direktiva nebo jiné, které se tam dají nebo focus, ale mělo by se to označit. U text fieldu se mi to už nějak povedlo, jen se to snažím naučit ještě dateField.

 
Nahoru Odpovědět 25.10.2018 13:32
Avatar
Odpovídá na niderle.l
Vladislav Ladicky:25.10.2018 13:42

Tak sem daj časti kódu. Jeden kde sa ti to podarilo, nech vidím ako si na to išiel, a druhý kde ti to nefunguje, nech vidím konkrétnejšie o čo sa pokúšaš.

 
Nahoru Odpovědět 25.10.2018 13:42
Avatar
niderle.l
Člen
Avatar
Odpovídá na Vladislav Ladicky
niderle.l:25.10.2018 13:51

Zde je napsaná ta direktiva:

directive('selectMe', function($timeout, $parse) {
            return {
                //scope: true,   // optionally create a child scope
                link: function(scope, element, attrs) {
                    // console.log('element', element);
                    // console.log('attrs', attrs);
                    var model = $parse(attrs.selectMe),
                        initValue = false;
                    scope.$watch(model, function(value) {
                        if(value === true) {
                            $timeout(function() {
                                initValue = true;
                                if(element[0].classList.contains('date-field')){
                                    element[0].children[0].select(); // asi nefunkční
                                }
                                else if(element[0].classList.contains('time-field')){
                                    element[0].children[0].children[0].select(); // asi nefunkční
                                }
                                else{
                                    element[0].select(); // funkční
                                }
                            });
                        } else if (value === false && initValue) {
                            $timeout(function() {
                                element[0].blur();
                            });
                        }
                    })
                }
            };
        }).
 
Nahoru Odpovědět 25.10.2018 13:51
Avatar
Odpovídá na niderle.l
Vladislav Ladicky:25.10.2018 13:56

A kde je tam použité jQuery?

 
Nahoru Odpovědět 25.10.2018 13:56
Avatar
niderle.l
Člen
Avatar
Odpovídá na Vladislav Ladicky
niderle.l:25.10.2018 14:18

tak z jQuery je použit $timeout a .select(), jinak jsem nebyl schopen toho docílit.

 
Nahoru Odpovědět 25.10.2018 14:18
Avatar
Odpovídá na niderle.l
Vladislav Ladicky:25.10.2018 14:36

Hm. Ale jQuery nemá timeout. Jedine, že by si používal ešte aj nejaký plugin do jQuery. Čo je však naprosto zbytočné. Nie len ten plugin, ešte máš ten kód v timeout vnorený zbytočne. A select metóda nad input elementami je tiež natívna a netreba na ňu jQuery. A korunou toho je, že miešať jQuery s frameworkom ktorý tiež manipuluje DOM model, je celkovo zlý nápad... Celý tento kód tak nemá logiku:

if(value === true) {
                            $timeout(function() {
                                initValue = true;
                                if(element[0].classList.contains('date-field')){
                                    element[0].children[0].select(); // asi nefunkční
                                }
                                else if(element[0].classList.contains('time-field')){
                                    element[0].children[0].children[0].select(); // asi nefunkční
                                }
                                else{
                                    element[0].select(); // funkční
                                }
                            });
                        } else if (value === false && initValue) {
                            $timeout(function() {
                                element[0].blur();
                            });
                        }
                    })
                }

A last but not least, element.select() metóda funguje LEN S input type text a textarea. Takže vynechaj timeout, vynechaj pokusy použiť select nad date či time inputmi a malo by to fungovať. Skús a napíš.

 
Nahoru Odpovědět 25.10.2018 14:36
Avatar
Vladislav Ladicky:25.10.2018 15:07

Tak som sa pozrel do dokumentácie a je to tak. $timeout je AngularJS servis, a select() he natívna JS metóda nad vhodnými inputmi, oboje nemá nič spoločné s jQuery a zdá sa, že všetko čo robíš zle, je že sa pokúšaš o select nad nevhodnými inputmi. Neviem to určite, nevidel som celý kód, usudzujem to len z tých tried date-field a time-field.

 
Nahoru Odpovědět 25.10.2018 15:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.