Bonjour à tous !
J'ai besoin d'un peu de vos lumières, j'ai cherché, trouvé, testé... mais sans résultats.
Je suis sur un forum, avec post et titre de post.
Lorsqu'un sujet est résolu, un bouton permet d'inscérer le terme "résolu" dans le titre de ce post.
Il y a un bouton qui gère cette fonction.
Ce que je voudrais faire, c'est inclure une fonction supplémentaire,dans ce bouton existant, qui ouvre un nouvel onglet sur Google.fr par exemple.
Voici le bout de code que je possède :

<input type="button" class="button2" value="Résolu" onclick="set_solved(this.form.elements['modif_topic_title'],'[résolu]')" style="display: inline;" id="button_solved">

Merci pour votre aide. Smiley cligne
Cdt
PatLac
Modérateur
Salut !

Plutot que de passer par onclik et de mettre tout ton JS dans la balise html tu va devoir l'externaliser. Soit tu mets le code Js dans un fichier Js soit tu le mets dans des balises <script> à la fin de ton code html. Ca te permettra d'executer une fonction ou tu peu faire ce que tu veux dedans, même plusieurs actions:

<input type="button" class="button2" value="Résolu" id="button_solved">

<script>
document.getElementById("button_solved").addEventListener("click", solveit);

function solveit() {
  set_solved(this.form.elements['modif_topic_title'],'[résolu]');
  // et ici tu peut faire d'autres actions pour ouvrir un onglet par exemple.
}
</script>
Merci pour votre retour!
J'ai essayé avec un script dans des balises <Head>, mais ça ne fonctionne pas...
Peut être que je complique trop ?

Merci

<html>
<Head>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<script type="text/javascript">
function ouvrirLien ()
{
var link = "https://www.google.fr";
open(link,"_blank")
}
</script>

</head>


<input type="button" class="button2" value="Résolu" id="button_solved">

<script>
document.getElementById("button_solved").addEventListener("click", solveit);

function solveit() {
set_solved(this.form.elements['modif_topic_title'],'[résolu]');
// et ici tu peut faire d'autres actions pour ouvrir un onglet par exemple.
< onclick="parent.ouvrirLien()">
}
</script>



</html>
Salut

Fait un clic droit, regarde la console, et corrige les erreurs qui sont écrit en rouge Smiley smile

1er :

Tu as < onclick="parent.ouvrirLien()"> en plein de milieu de ton JS, je sais pas pourquoi. surtout que c'est pas dans la code de laurent...

ensuite,

à quoi correspond set_solved ? tu nous le partages pas... impossible de tester.
Modifié par JENCAL (24 Feb 2020 - 12:03)
En fait je teste avec des bouts de code que je chope ici et là et j'essaye d'adapter à mon problème ...
C'est clairement de la bidouille !
Moi ce qu'il me manque, c'est le code qu'il faut inscérer pour ouvrir une url dans un nouvel onglet, là ou Laurent à mis les doubles // et son commentaire.
Soit inclure ça dans un script avec une fonction "ouvrirlien" et appeler cette fonction lors de l'action sur le bouton, soit un truc plus simple...j'en sais rien c'est pour ça que je sollicite votre aide.
Merci
Modifié par Patlac (24 Feb 2020 - 12:24)
Patlac a écrit :
En fait je teste avec des bouts de code que je chope ici et là et j'essaye d'adapter à mon problème ...


le vrai problème il est là Smiley cligne
Alors, plus simplement, quel est le code, ou le script, qu'il faut que j'ajoute pour ouvrir une URL dans une nouvel onglet, à la suite de ce que Laurent à proposé plus haut.
Comme indiqué, Google est un exemple, si vous voulez mettre youtube vous pouvez.
Merci.
Bon, j'ai trouvé qq qui fonctionne pas mal :

<script type="text/javascript">
function ouvrirLien ()
         {
         var link = "https://www.google.fr";
         open(link,"_blank")
         }
</script>


avec le code pour appeler le script :
<img src="lien.jpg" border="0" ALT="Mon site" onclick="parent.ouvrirLien()">


Mais ça fait 2 actions a faire, moi je voudrais grouper tout ça en une seule, c'est à dire 2 actions en un seul clic.
Ci-dessous ce que j'ai compilé:

<html><input type="button" class="button2" value="Résolu" id="button_solved">
<img src="lien.jpg" border="0" ALT="Mon site" onclick="parent.ouvrirLien()">

<script>
document.getElementById("button_solved").addEventListener("click", solveit);

function solveit() {
  set_solved(this.form.elements['modif_topic_title'],'[résolu]');
  // et ici tu peut faire d'autres actions pour ouvrir un onglet par exemple.

}
</script>
<script type="text/javascript">
function ouvrirLien ()
         {
         var link = "https://www.google.fr";
         open(link,"_blank")
         }
</script>

</html>



Merci

[MODERATION] Utilise les balises de code pour la mise en forme stp c'est beaucoup plus agréable pour te lire Smiley smile merci ! laurent
Modifié par _laurent (24 Feb 2020 - 14:27)
Modérateur
Re,

Alors, je ne comprend pas pourquoi tu met la seconde action sur un autre élément et avec onclick.... il suffit que tu reprenne mon code et que tu mette ton open() à la place des // comme tu dis.

<input type="button" class="button2" value="Résolu" id="button_solved">
<script>
document.getElementById("button_solved").addEventListener("click", solveit);
function solveit() {
  set_solved(this.form.elements['modif_topic_title'],'[résolu]');
  var link = "https://www.google.fr";
  open(link,"_blank")
}
</script>

Modifié par _laurent (24 Feb 2020 - 16:18)
Salut,

Il faudrait utiliser les balises "code" qui facilitent la lecture.

Soit tu crées une nouvelle fonction javascript qui va englober les appelles à tes fonctions (c'est globalement ce que te suggère Laurent), soit tu ajoutes autant d'addEventListener que tu veux appeler de fonction quand tu cliques sur le bouton.

Avec la méthode de Laurent :

<form>
<input type="button" class="button2" value="Résolu" id="button_solved">
</form>

<script>
function ouvrirLien()
{
var link = "https://www.google.fr";
open(link,"_blank")
}

document.getElementById("button_solved").addEventListener("click", solveit);

function solveit() {
  set_solved(this.form.elements['modif_topic_title'],'[résolu]');
  // et ici tu peut faire d'autres actions pour ouvrir un onglet par exemple.
  ouvrirLien(); // ici on est dans le code javascript, on appelle directement la fonction javascript, on ne re écrit pas du code html comme tu l'as fait
}
</script>


Un exemple de ce que ça donne : https://jsfiddle.net/1rmxe26w/1/

En multipliant les addEventListener :

<form>
<input type="button" class="button2" value="Résolu" id="button_solved">
</form>

<script>
function ouvrirLien()
{
var link = "https://www.google.fr";
open(link,"_blank")
}

//pour cette fonction vu que tu as l'air de fournir des paramètres c'est un peu plus pénible,il faut passer par une fonction anonyme (ou la fonction bind).
//L'ideal serait de pouvoir avoir une fonction set_solved sans avoir de parametre à fournir (ce qui me semblerait relativement logique vu que tes 2 paramètres ne semblent pas vraiment variable..) 
document.getElementById("button_solved").addEventListener("click", function(){
set_solved(this.form.elements['modif_topic_title'],'[résolu]');
});
document.getElementById("button_solved").addEventListener("click", ouvrirLien);
</script>


Et l'exemple qui va avec : https://jsfiddle.net/1rmxe26w/2/
Meilleure solution
Merci à tous pour vous être penché sur mon problème.
Ca fonctionne avec le dernier code de Mathieuu en multipliant les AddEventListener.
Je vous souhaite bonne continuation.
PatLac
Jean-Pierre-Bruneau a écrit :
Je continue à ne rien comprendre, que se soit un bouton ou un lien pour ouvrir dans une deuxième page vers une autre URL il suffit de mettre:
Non ? Smiley confused


On dirait qu'il a pas envie de te répondre Smiley smile
JENCAL a écrit :


On dirait qu'il a pas envie de te répondre Smiley smile


Merci également à Jean-pierre ... Smiley biggrin