/ / jQuery abre fancybox si se cumple la condición - jquery, iframe, fancybox

jQuery open fancybox si se cumple la condición - jquery, iframe, fancybox

Tengo un ancla que abre un fancybox. Quiero que el fancybox se abra solo cuando se realiza una selección de un selectbox.

Descubrí que vincular un evento de clic al ancla con preventDefault o devolver falso no impide que se abra el fancybox. Encontré una manera de detener la apertura de la caja de lujo. Ahora tengo:

HTML

<div>
<a id="brasil" href="<?php echo $this->url( array( "module" => "amodule", "controller"  => "acontroller", "action" => "soccer"))?>" class="someclass bigfancybox"><?=$this->translate("soccer")?></a>
</div>

Las dimensiones (ancho, altura, etc. definidas en fancybox.js) de fancybox están vinculadas al nombre de clase "bigfancybox" del ancla.

En jQuery tengo un cheque si se realiza una selección en match_id:

jQuery("#brasil").fancybox({
onStart: function() {
var matchid = jQuery("#match_id").val();
if(matchid == "")
{
alert(selectmatchmessage);
return false;
}
}
});

Todo esto funciona bien, excepto que si la condiciónse cumple, ahora el fancybox se abre en dimensiones predeterminadas y no se abre como un iframe como lo haría sin la condición jQuery. ¿Hay alguna forma de verificar una condición antes de abrir un fancybox en un iframe?

Respuestas

2 para la respuesta № 1

Puede que tenga que atar un click evento para usted #brasil selector (o a su .bigfancybox Selector si lo prefiere) en lugar de fancybox.

Luego, valide la condición después de la evento y disparan fancybox programáticamente Si la condición se cumple de lo contrario no hacer nada false) me gusta :

jQuery("#brasil").on("click", function () {
var matchid = jQuery("#match_id").val();
if (matchid !== "") {
// condition is NOT empty, so fire fancybox
jQuery.fancybox({
// fancybox API options
href: this.href,
type: "iframe"
});
};
return false; // prevent default and stop propagation
}); // on click

Ver JSFIDDLE

NOTA :

El violín usa fancybox v1.3.4 pero el código también funcionará perfectamente para fancybox v2.x, solo asegúrate de usar las opciones API correctas para cada versión.