Имам котва, която отваря една касичка. Искам фенкибоксът да се отвори само когато е направена селекция от селекция.
Открих, че свързването на събитие при натискане на котвата с preventDefault или return false не пречи на отварянето на fancybox. Намерих начин да попреча на отварянето на кутията. Сега имам:
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>
Размерите (ширина, височина и т.н., дефинирани във fancybox.js) на fancybox са свързани с класовото име "bigfancybox" на котвата.
В jQuery имам проверка дали е направена селекция на match_id:
jQuery("#brasil").fancybox({
onStart: function() {
var matchid = jQuery("#match_id").val();
if(matchid == "")
{
alert(selectmatchmessage);
return false;
}
}
});
Всичко това работи добре, освен ако условиетое изпълнено, сега fancybox се отваря в стандартните размери и не се отваря като iframe, както би било без jQuery условие. Има ли начин първо да проверите състоянието, преди да отворите fancybox в iframe?
Отговори:
2 за отговор № 1Може да се наложи да обвържете a click
събитие Към твоя #brasil
селектора (или към вашия. \ t .bigfancybox
селектора, ако предпочитате), а не с fancybox.
След това потвърдете състоянието след събитие и пожарогасителна кабина програмира ако условието е изпълнено, в противен случай не се прави нищо (връщане false
) като :
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
виждам JSFIDDLE
ЗАБЕЛЕЖКА :
Цигулката използва fancybox v1.3.4, но кодът ще работи безпроблемно и за fancybox v2.x, просто се уверете, че използвате правилните опции на API за всяка версия.