Jak vymáčknout formulář pomocí JavaScriptu

Nějaký čas zpět, jsem se snažil cvičně se zabývat zpracováváním dat z formuláře pomocí Javascriptu, a musel jsem konstatovat, že tento jazyk nemá žádnou komplexní možnost, jak získat data, která do formulářů zadáme v takové podobě, jako je to možné např. v PHP. Proto jsem napsal funkci, která snad bude schopná takový úkol zvládnout. Zde ji přikládám:

Vycházím z toho, že

  • pro textové vstupy (type=“text password hidden“, <textarea>) budu chtít získat zadaný text (value)
  • u přepínacích (radio) boxů budu chtít hodnotu (value) právě zvolené možnosti
  • u zaškrtávátek budu chtít hodnotu, pokud jsou zaškrtnuté (value)
  • u výběru z možností (<select>) budu chtít hodnotu právě vybrané možnosti (<option>)
  • a u tlačíítek, pokud budou stisknuty, hodnotu (ikdyž… k čemu tlačítka 🙂 ?)

Skript funguje pomocí knihovny funkcí JQuery, se kterou poslední dobou učím (a cpu ji kde se dá 😉 ). Pokud jsem něco vynechal, nebo pokazil, pište prosím do komentářů pod článkem 🙂

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
function inpvalue(obj) {
    var tagtype = obj.prop("tagName");
    
    if(tagtype==='INPUT')    {
        if(obj.attr('type')==='checkbox'){
            if(obj.prop('checked'))var retval=obj.val();
        }
        if(obj.attr('type')==='text' || obj.attr('type')==='password' || obj.attr('type')==='hidden'){
            var retval=obj.val();
        }
        if(obj.attr('type')==='radio'){
            var elname=obj.attr('name');
            var retval=$('input[name='+elname+']:checked').val();
            
        }
        if(obj.attr('type')==='file'){
            var retval=obj.val();
        }
    }
    
    if(tagtype==='TEXTAREA')
        var retval=obj.val();
    
    if(tagtype==='BUTTON')
        var retval=obj.val();
    
    if(tagtype==='SELECT')
        var retval=obj.val();
    
    if(retval.length<1)return false;
    return retval;
}
var formvalue=inpvalue(jQuery('#idEL'));
</script>

Napsat komentář

Time limit is exhausted. Please reload CAPTCHA.