Demo – vlastní formát adresy v našeptávači
Ukázka možnosti změnit text v našeptávači adres.
Využívá dvou funkcí, které lze nastavit ve Smartform API:suggestionFormatter
– je volán před zobrazením každého řádku v našeptávači; umožňuje měnit text v našeptávači – viz dokumentace metodysetSuggestionFormatter
.selectionCallback
– je volán před zápsaním textu do vstupního políčka poté, co uživatel vybere jeden řádek v našeptávači – viz dokumentace metodysetSelectionCallback
.
Prohození obce a PSČ při našeptávání celé adresy
Při našeptávání celé adresy v našeptávači u políčka „ulice a číslo“ je adresa standardně ve formátu „ulice a číslo, PSČ obec“. V následujícím formuláři je PSČ a obec prohozená.
Změna formátování obce při našeptávání celé adresy
Při našeptávání celé adresy v našeptávači u políčka „ulice a číslo“ používá Smartform někdy místo názvu obce název pošty (když název pošty obsahuje název obce) nebo název městké části (např. v Praze). Následující formulář při našeptávání celé adresy používá výhradně název obce.
Zdrojový kód - JavaScript:
<script type="text/javascript" src="https://secure.smartform.cz/api/v1/smartform.js" async></script> <script type="text/javascript"> var smartform = smartform || {}; smartform.beforeInit = function () { smartform.setClientId( 'smartform' ); } smartform.afterInit = function () { smartform.getInstance( "smartform-instance-swap" ).setSuggesstionFormatter( swapCityZipSuggesstionFormatter ); smartform.getInstance( "smartform-instance-municipality" ).setSuggesstionFormatter( municipalitySuggesstionFormatter ); smartform.getInstance( "smartform-instance-municipality" ).setSelectionCallback( municipalitySelectionCallback ); } /** * Formátuje celou adresu pro našeptávač. Prohazuje pořadí obce a PSČ. */ function swapCityZipSuggesstionFormatter( suggestion, fieldType ){ if ( suggestion.isWholeAddress() ) { return suggestion.getValue("smartform-street-and-number") + ", " + suggestion.getValue("smartform-city") + ", " + suggestion.getValue("smartform-zip") ; } return null; // pouzije se defaultni format } /** * Formátuje celou adresu pro našeptávač. Místo upraveného názvu obce používá čistý název obce. */ function municipalitySuggesstionFormatter( suggestion, fieldType ){ if ( suggestion.isWholeAddress() && fieldType=="smartform-street-and-number" ) { return suggestion.getValue("smartform-street-and-number") + ", " + suggestion.getValue("smartform-zip") + " " + suggestion.getValue("smartform-municipality"); } return null; // pouzije se defaultni format } /** * Když uživatel vybere řádek v našeptávači, do políčka "obec" se dostane čistý název obce. */ function municipalitySelectionCallback(element, text, fieldType, suggestion){ if( suggestion.isWholeAddress() && fieldType=="smartform-city" ) { element.value = suggestion.getValue("smartform-municipality") return false; } else return true; // pouzije se defaultni hodnota } </script>
Hlavní navigace: