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>