con questo script inviatomi originariamente da DINAMIC+
ottengo dinamicamente i valori di un select in base all'età inserita nel campo "datan" in un form ..tutto nella stessa pagina.
codice:
<html>
<head>
<script type="text/javascript" language="JavaScript">
<!--
function generateCategory( __hForm )
{
var _bornDate = __hForm.elements["date"].value;
var _dateToken = _bornDate.match( /^(\d{2})\/(\d{2})\/(\d{4})$/ );
if ( _dateToken == null ||
_dateToken[1] < 01 || _dateToken[1] > 31 ||
_dateToken[2] < 01 || _dateToken[2] > 12 ||
_dateToken[3] < 1900 || _dateToken[3] > 2005 )
{
__hForm.elements["category"].options.length = 0;
return false;
}
else {
var _curDate = new Date( );
var _typDate = new Date( _dateToken[3], _dateToken[2]-1, _dateToken[1] );
var _gotAge = parseInt( (_curDate.getFullYear() + _curDate.getMonth() / 100 + _curDate.getDate() / 10000 ) -
(_typDate.getFullYear() + _typDate.getMonth() / 100 + _typDate.getDate() / 10000 ) );
if ( _gotAge >= 18 && _gotAge <= 28 ) {
with ( __hForm.elements["category"] )
{
options.length = 0;
options[options.length] = new Option( "Membro Junior", "junior", false, false );
options[options.length] = new Option( "Membro Super", "super", false, false );
}
return true;
}
else if ( _gotAge >= 29 && _gotAge <= 40 ) {
with ( __hForm.elements["category"] )
{
options.length = 0;
options[options.length] = new Option( "Membro Senior", "senior", false, false );
options[options.length] = new Option( "Membro Super", "super", false, false );
}
return true;
}
else {
with ( __hForm.elements["category"] )
{
options.length = 0;
options[options.length] = new Option( "Non puoi diventare membro", "invalid", false, false );
}
return false;
}
}
}
//-->
</script>
</head>
<body>
<form>
Data:
<input type="text" name="date" value="gg/mm/aaaa" maxlength="10" onkeyup="generateCategory( this.form );" />
Categoria:
<select name="category"></select>
</form>
</body>
</html>
lo script funziona egregiamente ma facendo il submit (nel mio caso ad una pagina php) e tornando indietro con un semplice javascript:history.back(); non vengono mantenute le opzioni elaborate, l'utente che per qualsiasi problema (errore di completamento ecc..) fa un back alla pagina precedente è costretto a riselezionare l'opzione del select. è possibile evitare cio' ?
grazie.