Autor Zpráva
Majkelju
Profil
Ahoj,
mám takový asi banální problém, ale nepodařilo se mi vygooglit řešení.
Mám obyčejné textové pole, do kterého, když kliknu, tak chci, aby se automaticky označil celý text, který pole obsahuje. Momentálně, když do něj kliknu, tak se kurzor nastaví za poslední znak textu, což je pro účely aplikace nepraktické. Poradí někdo?
ShiraNai7
Profil
<textarea onclick="this.select()">Heyy</textarea>
Majkelju
Profil
Děkuji :)
Chamurappi
Profil
Reaguji na ShiraNaiho7:
Použil bych spíš onfocus.
ShiraNai7
Profil
Chamurappi:
onfocus se nechová dobře - označení se po kliknutí ruší (podle toho kam se klikne). Spolehlivě funguje jen v IE.
user243
Profil
mně přijde, že funguje normálně; stejně se chová i adresní řádek prohlížeče;
ShiraNai7
Profil
user243:
To by mě zajímalo jak a v čem to zkoušíš.
Třeba by to šlo rozchodit přidáním složitějšího JS do onfocus, ale nevidím k tomu důvod. Verze onclick funguje spolehlivě ve všech prohlížečích.

Verze s onfocus se chová takhle:

Firefox - při prvním focusu se vybere, při dalším se vybere ale hned zruší a tak stále dokola; je jedno kam se klikne
Chrome, Safari - výběr se vždy zruší; je jedno kam se klikne
Opera - ta jediná funguje jako "adresní řádek" - po kliknutí do textu se nevybere, po kliknutí mimo ano
IE - vždy se vybere bez ohledu na to kam se klikne

Zkoušel jsem to na následujícím.

<!DOCTYPE HTML>
<html>
  <head>
  <title>Test</title>
  </head>
  <body>

    <textarea onfocus="this.select()" rows="10" cols="50">Heyy</textarea><br />
    <input onfocus="this.select()" type="text" value="Heyy" />

  </body>
</html>
user243
Profil
chyba na mé straně, špatně jsem to pochopil;
<textarea onclick="this.select()">Heyy</textarea>
funguje dobře a je to vlastně to, co autor tématu hledal;
joe
Profil
ShiraNai7:
onfocus se nechová dobře - označení se po kliknutí ruší (podle toho kam se klikne). Spolehlivě funguje jen v IE.
V Opeře mi onfocus funguje dobře, jako adresní řádek, při každém focusu se vybere.

Lepší je využít onfocus, lidé používají i klávesnici, ne všichni jsou klikálkové.

<input onfocus="select(this)">

function select(element) {
  setTimeout(function () {
    element.select();
  }, 50);
}



A pokud autor vymýšlí textové "nápovědy" ve vstupních polích, jsou tu od toho placeholdery.

mmm - dotaz ve špatné kategorii
Moderátor Alphard: Přesunuto do js.
Majkelju
Profil
Děkuji za pomoc, ještě bych to rád udělal v jQuery v DataTables, tam jsem zjistil, že si s tímhle postupem asi nevystačím, nebo nevím, kam to umístit...Moc tomu kódu nerozumím, ale pochopil jsem snad dobře, že je třeba upravit něco tady:
"fnDrawCallback": function () {
        $('#table_dzs tbody tr td:nth-child(7)').editable( './files/save_dzs.php?stavba=<?echo $stavba;?>', {
            "callback": function( sValue, y ) {
                var aPos = oTable.fnGetPosition( this );
                oTable.fnUpdate( sValue, aPos[0], aPos[2] );

            },
            "submitdata": function ( value, settings ) {
                return { "id": oTable.fnGetData( this.parentNode )[0], // get the value of first row/column. In my case it is the "id" in database
                "value": oTable.fnGetPosition( this )[7] // Column number
                };

            },
            "height": "14px"
        });
    }

Pokud taková věc v DataTables nejde, tak se s tím smířím :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0