Ahora KumbiaPHP está en Slack!!

Si deseas contactar con nosotros y de forma rápida, estamos en Slack:

http://slack.kumbiaphp.com/

Como validar fechas helper date_field_tag [versión 0.5-RC1]

edited julio 2008 in FAQ
en la versión 0.5-RC1
el helper date_fiel_tag ha cambiado con un calendario más elegante,
lo que no hace es validar el formato de la fecha a nivel cliente para esto vamos a cambiar el helper de esta manera.

paso 1.
craer un archivo llamado fechas.js y dejarlo dentro de la carpeta

public/javascript/kumbia/fechas.js

paso 2
copiar y pegar este codigo

function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}
function valSep(oTxt){
var bOk = false;
bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
return bOk;
}
function finMes(oTxt){
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2: nRes = 29; break;
case 3: nRes = 31; break;
case 4: nRes = 30; break;
case 5: nRes = 31; break;
case 6: nRes = 30; break;
case 7: nRes = 31; break;
case 8: nRes = 31; break;
case 9: nRes = 30; break;
case 10: nRes = 31; break;
case 11: nRes = 30; break;
case 12: nRes = 31; break;
}
return nRes;
}
function valDia(oTxt){
var bOk = false;
var nDia = parseInt(oTxt.value.substr(0, 2), 10);
bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
return bOk;
}
function valMes(oTxt){
var bOk = false;
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
bOk = bOk || ((nMes >= 1) && (nMes <= 12));
return bOk;
}
function valAno(oTxt){
var bOk = true;
var nAno = oTxt.value.substr(6);
bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
if (bOk){
for (var i = 0; i < nAno.length; i++){
bOk = bOk && esDigito(nAno.charAt(i));
}
}
return bOk;
}

function valFecha(oTxt){
var bOk = true;
if (oTxt.value != ""){
bOk = bOk && (valAno(oTxt));
bOk = bOk && (valMes(oTxt));
bOk = bOk && (valDia(oTxt));
bOk = bOk && (valSep(oTxt));
if (!bOk){
alert("Fecha inválida");
oTxt.value = "";
oTxt.focus();
}
}
}

paso 3:
abrir el helper date_field_tag

library/kumbia/helpers/tags.php


paso 4
en la linea 789 hasta 803 aprox cambiar por este otro código

function date_field_tag($name){
$params = is_array($name) ? $name : get_params(func_get_args());
if(!isset($params['onblur'])) {
$params['onblur'] = "valFecha(this)";
} else {
$params['onblur'].=";valFecha(this)";
}

if(isset($params['format'])){
$format = $params['format'];
unset($params['format']);
} else {
$format = "%d-%m-%Y";
}
if(isset($params['theme'])){
$theme = $params['theme'];
unset($params['theme']);
} else {
$theme = "theme-1";
}
if(isset($params['language'])){
$language = $params['language'];
unset($params['language']);
} else {
$language = "calendar-es";
}

if(isset($params[0])) {
$params = array_merge(get_id_and_name($params[0]), $params);
}

$code = '';
$code .= javascript_library_tag('jscalendar/calendar');
$code .= javascript_library_tag('jscalendar/calendar-setup');
$code .= javascript_library_tag('fechas'); // página javacript q valida gecha
$code .= text_field_tag($params);
$code .= img_tag("calendar.gif","id: ".$params['id']."tigger","style: cursor: pointer;")."\n";

$code .= javascript_library_tag("jscalendar/$language");
$code .= stylesheet_link_tag("style-calendar/$theme", "true");
$script= " Calendar.setup({ \n".
" inputField : '".$params['id']."', // ID of the input field \n".
" ifFormat : '".$format."', // the date format \n".
" daFormat : '".$format."', \n".
" button : '".$params['id']."tigger"."' // ID of the button \n".
" } \n".
" ); \n";
$code .= xhtml_tag('script', 'type: text/javascript', "content: $script");

return $code;
}


ahora con esto todos nuestros date_field_tag serán validados automaticamente.

PD: en el date_field_tag($name)
se agregaron estas lineas


if(!isset($params['onblur'])) {
$params['onblur'] = "valFecha(this)";
} else {
$params['onblur'].=";valFecha(this)";
}

$code .= javascript_library_tag('fechas');
Sign In or Register to comment.