2010-11-01 20 views
1

J'utilise Colorbox pour charger un formulaire de contact dans une iframe.jQuery colorbox - Obtenir le paramètre url du lien cliqué

Cependant, je veux que l'URL Colorbox soit différente de celle du HTML, pour servir une page de contact différente pour les utilisateurs JS et non-JS.

J'ai besoin d'obtenir le paramètre url du lien cliqué exactement si.

Code HTML:

<a href="contact?id=XX" class="enquiryForm"> 

Code Colorbox:

$(document).ready(function(){ 

$('.enquiryForm').colorbox({height:600, width:800, iframe:true, href: 'colorboxcontact?id=XX'}); 

}); 

Où 'contact' est la page non-JS et 'colorboxcontact' est la page à charger dans le Colorbox iframe.

Comment puis-je extraire le paramètre url du lien cliqué sur, puis l'ajouter à la valeur href 'colorboxcontact' dans mon appel jQuery?

* EDIT *

Ok je suis arrivé à l'adresse suivante mais ne pas fonctionner. Quelqu'un peut-il indiquer où je vais mal?

$('.enquiryForm').colorbox({ 
    height:600, 
    width:800, 
    iframe:true, 
     href: $('.enquiryForm').each(function() { 
     newhref = 'colorboxcontact' + $(this).attr('href').split("?")[3]; 
     $(this).attr('href', newhref); 
    }); 
    }); 

Répondre

2

Pour obtenir des informations de la chaîne de requête spécifique pour la chaîne URL dont vous avez besoin cette fonction à l'adresse:

How can I get query string values in JavaScript?

légèrement modifié:

function getParameterByName(url, name) 
{ 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(url); 
    if(results == null) 
    return ""; 
    else 
    return decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

donc vous va se retrouver avec quelque chose comme ceci:

$('.dialog-open').each(function() { 
    $(this).colorbox({ 
    height: 600, 
    width: 800, 
    iframe: true, 
    href: "contact?id=" + getParameterByName($(this).attr("href"), "id") 
    }); 
}); 
+0

Le bouton "Répondre à votre question" ne semble pas fonctionner dans Safari ... de toute façon, merci, je l'ai déjà résolu comme ceci: – Luke

+0

$ ('. EnquiryForm'). Each (function() { var loc = $ (this) .attr ('href'). split ('?'), base = loc [0], requête =' '; if (loc [1]) { $ (this) .attr ('href', 'colorboxcontact' + '?' + Loc [1]); } else { $ (this) .attr ('href', 'colorboxcontact? Id = XX'); } }); $ ('. EnquiryForm'). Colorbox ({ hauteur: 600, largeur: 550, iframe: true }); – Luke

1

Utilisez un .each() pour obtenir la valeur, comme celui-ci:

$(document).ready(function(){ 
    $('.enquiryForm').each(function() { 
    $(this).colorbox({ 
     height: 600, 
     width: 800, 
     iframe: true, 
     href: $(this).attr("href") 
    }); 
    }); 
}); 

.each() vous donne accès à chaque <a> que vous en boucle sur eux par l'intermédiaire this. Si vous ne vous inquiétez pas si c'est une URL complète ou non, vous pouvez remplacer $(this).attr("href") avec this.href (IE pleinement nuancer), comme ceci:

$(function(){ 
    $('.enquiryForm').each(function() { 
    $(this).colorbox({ height: 600, width: 800, iframe: true, href: this.href }); 
    }); 
}); 
+0

Salut Nick - J'avais essayé quelque chose de semblable à cela et il obtient l'ensemble url, mais ce que je suis en train d'essayer de faire est de saisir le paramètre '= XX? Et l'ajouter à une autre URL, si cela a du sens ... – Luke

+0

Donc, au lieu de 'contact? id = XX', il devient 'COLORBOXcontact? id = XX'. En effet, j'ai un modèle de page différent pour le formulaire standard du formulaire de boîte de couleur pour les utilisateurs non-JS (à l'exclusion des en-têtes, etc.). Une idée de comment faire ça? – Luke

1

Je pense que peut-être une approche simple serait de mettre le href à une fonction qui renvoie le lien.

$(document).ready(function(){ 
    $('.enquiryForm').colorbox({ 
     height:600, 
     width:800, 
     iframe:true, 
     href: function(){ 
      return $(this).attr('href'); 
     } 
    }); 
});