2010-11-12 20 views
0

J'utilise "FancyBox" dans le contrôle utilisateur ASP.NET (dans une page de contenu). Je veux qu'un clic (clique côté client) sur un bouton 'placé sur la page chargée dans la FancyBox, appelle une fonction JavaScript, et dans cette fonction je veux activer un ImageButton contenu dans la page parente (La page qui a ouvert la boîte de dialogue modale FancyBox) et ajouter dynamiquement la propriété 'onclick' .Ajout de la propriété onclick à un ImageButton dans la page parente de la fonction JS appelée à partir du bouton à l'intérieur de la page chargée dans FancyBox

Dans le fichier de code du formulaire qui contient le ImageButton j'ai ajouté un attribut donc je peux facilement sélectionner à l'aide de JQuery

ibtnDeleteImage.Attributes.Add (« serverID », « ibtnDeleteImage »);

Voici la fonction utilisée pour ajouter la propriété onclick au ImageButton

function addOnclick() { 

    //Get ref to the delete article thumbnail image button 
    var $ibtnDeleteThumbImage = $("input[serverId='ibtnDeleteImage']", window.parent.document); 

    //Enable the image button 
    $ibtnDeleteThumbImage.removeAttr("disabled"); 

    //Add onclick property to the ImageButton assign it an event handler and avoid post back to the server 
    $ibtnDeleteThumbImage[0].onclick = function() { deleteThumbnailImage(); return false; }; 

    } 

Voici le gestionnaire d'événements:

function deleteThumbnailImage() { 
    var dialogMessage = "Are you sure you want \n to delete the article thumbnail"; 
    if (confirm(dialogMessage)) { 
     var $ibtnDeleteThumbImage = $("input[serverId='ibtnDeleteImage']", window.parent.document); 
     //Remove the onclick property from the ImageButton 
     $ibtnDeleteThumbImage.removeAttr("click"); 
     //Disable the ImageButton 
     $ibtnDeleteThumbImage.attr('disabled', 'disabled'); 

    } 

}

J'utilise la syntaxe

$ibtnDeleteThumbImage[0].onclick = function() { deleteThumbnailImage(); return false; }; 

Et pas

$ibtnDeleteThumbImage.attr("onclick", "deleteThumbnailImage();return false;"); 

En raison du problème décrit here

Mon problème: Ce travail de syntaxe bien dans une fonction javascript appelé par un bouton Page contenu chargé dans une Iframe régulière, mais pas dans un contenu dans la page chargée dans FancyBox. (La propriété onclick n'est pas ajoutée à ImageButton et il y a une publication sur le serveur)

Est-ce que quelqu'un sait quel est le problème et quelle est la solution?

Merci

Répondre

0

Cela pourrait être un problème de script croisé.

Dans votre fonction addOnClick, vous pourriez faire quelque chose comme ça

$("input[serverId='ibtnDeleteImage']").click(function() { 
    // perform delete logic here 
}).removeAttr("disabled");