Tengo un formulario con un campo de fecha que se llena con CJuiDatePicker, el calendario sale a un lado del campo al poner el cursor sobre el, esto funciona bien si muestro el formulario en el navegador pero quiero que estos datos se llene desde un dialogo con CJuiDialog pero al mostrar el formulario en el dialogo ya no sale el calendario, adjunto imagen.
Haces get via ajax para llamar a la pagina create… Creo que el problema de que no puedas ejecutar el codigo que se retorna de la llamada via ajax es eso… el dataType… Entonces para arreglarlo debes de cambiar ‘dataType’=>‘json’ por ‘dataType’=>‘html’
Si eso no te llegase a funcionar creo que tendrías que ser un poco mas claro con el codigo y escribir explicitamente que quieres que se ejecute cualquier script que se haya retornado en la respuesta… esto lo haces de la siguiente manera:
// genera el dialogo para agregar un nuevo modelo
function addProject()
{
<?php echo CHtml::ajax(array(
'url'=>array('create'),
'data'=> "js:$(this).serialize()",
'type'=>'post',
'dataType'=>'html', // <<------- json por html
'success'=>"function(data)
{
if (data.status == 'failure')
{
$('#dialogProject div.divForForm').html(data.div);
$('#dialogProject div.divForForm').find('script').each(function(i) { // <<------ explicito
eval($(this).text());
});
// Here is the trick: on submit-> once again this function!
$('#dialogPrime div.divForForm form').submit(addProject);
}
else
{
//$('#dialogProject div.divForForm').html(data.div);
$.fn.yiiGridView.update('project-grid');
//setTimeout(\"$('#dialogProject').dialog('close') \",3000);
$('#dialogProject').dialog('close');
}
} ",
))?>;
return false;
}
Si cambio sólo a html el dialog solo hace un parpadeo y desaparece sin dejarme hacer nada (pantallaso), lo regreso a json y agrego el ‘código explicito’ pero funciona igual, no me muestra el calendario.
Lo estoy poniendo en mal lugar ?
La verdad no entiendo por que el error, tendré que estudiar las diferencias.
Bueno, viendo el porque no funciona el calendario cuando se llama desde una ventana modal … encuentro que no lo hace porque no se cargan las librerias de jquer y jqueri.ui
Entonces hay una forma algo fea de hacer que funcione bien… y es la siguiente
Por ahi tienes en CHtml::ajax(array(… tienes el ‘success’=> entonces solo intenta ajustar el codig… te digo, hice la prueba y en efecto no funcionaba al inicio… pero luego de un rato se me ocurrio lo que te envie.
Tambien deberias de hecharle un ojo a jQuery.ajax … porque el metodo ajax de la clase CHtml es un wrapper de esa libreria original…