Autor Zpráva
Ikki
Profil
Zdravím,
mám JS (níže) který zařizuje to, že po kliknutí na ikonku se vyplní random string do inputu, no jenže je "nutné" aby to bylo ve formech, což při odesílání dělá neplechu a hodnota inputu se neodešle (jak taky, že?), což je problém. Jak tedy převést nebo nahradit form, případně jak upravit JS?
Předem říkám, že já a JS nejsme kamarádi, tedy pokud mi někdo dá radu do JS, tak prosím i s nějakým bližším popisem. Děkuji :D

HTML:
<form method="POST">
  <form name="randform"></form>
    <form name="randform">
      <div class="form-group row">
        <div class="col-md-12 passfieldcont">
          <input type="text" placeholder="Kód kupónu" name="randomfield" class="form-control passwordfield" required>
          <a onClick="randomString();"><i class="fa fa-key" id="passwd"></i></a>
         </div>
       </div>
   </form>
</form>
JS:
function randomString() {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var string_length = 8;
    var randomstring = '';
    for (var i=0; i<string_length; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum,rnum+1);
    }
    document.randform.randomfield.value = randomstring;
}

Přeji pěkný večer.
Keeehi
Profil
no jenže je "nutné" aby to bylo ve formech
Tak elementy (tagy) se dají cílit i jinak než skrz jména formulářů. Například můžeš tomu elementu (inputu) dát nějaké id
id="randomfield"
a pak ho cílit pomocí
document.getElementById("randomfield")

Další (složitější) možností je cílení relativní pozicí oproti prvku na kterém událost vznikla. Například v tomto případě by se dal vzít rodičovský element (this.parntNode - to je ten obalující div) a v něm pak vzít prvního potomka. Tohle jde ale použít jen v případě, že je ten html kód dostatečně stabilní. Spíš to tu uvádím jen jako doplňující možnost. Tobě bude zřejmě úplně stačit ta možnost s tím IDčkem.
Ikki
Profil
Ahoj, děkuju za radu, ale jsem bezradnej.
Zkusil jsem to, jenže problém nastav při vymazání form metod - ikona již negeneruje string do inputu, což má asi nějakou návaznost na JS, jenže tím že JS moc nerozumím, tak absolutně nevím co a jak. Jediné co mi selský rozum říká je, že spojitost tam je v "randform", ale jak to ovlivňuje document?
Keeehi
Profil
Ikki:
Tak doufám, že ti selský rozum řekl, že jsem v tom řetězci měl překlep, a místo dandomfield tam samozřejmě mělo být randomfield a že jsi to opravil. Pokud ano, tak nám ukaž, jak jsi to tam tu moji radu zakomponoval.
Ikki
Profil
Samozřejmě jsem si to upravil, byla to první věc které jsem si všiml když jsem četl tvou odpověď.

HTML:
<form method="POST">
      <div class="form-group row">
        <div class="col-md-12 passfieldcont">
          <input type="text" placeholder="Kód kupónu" id="randomfield" name="randomfield" class="form-control passwordfield" required>
          <a onClick="randomString();"><i class="fa fa-key" id="passwd"></i></a>
         </div>
       </div>
   </form>
</form>

JS:
function randomString() {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var string_length = 8;
    var randomstring = '';
    for (var i=0; i<string_length; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum,rnum+1);
    }
    document.getElementById("randomfield") = randomstring;
}

Určitě jsem udělal blbost s tím JS, ale jak říkám - JS a já nejsme kamarádi.
Radek9
Profil
Ikki:
document.getElementById("randomfield") = randomstring;
Co má tohle podle tebe dělat? Snažíš se do elementu uložit string. Ty to přece chceš uložit do value toho elementu:
document.getElementById("randomfield").value = randomstring;
Ikki
Profil
Bože, já jsem vůl. Taková maličkosti.

Díky moc za pomoc, snad nejsem za úplného ****.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0