Ma page contient un formulaire avec 20 attributs de sélection qui, pour le sens du formulaire, sont regroupés en 10 paires apparentées.
J'ai donné aux utilisateurs la possibilité de randomiser les options pour chacune des 10 paires par un javascript dépendant de jQuery.
La randomisation des sélections fonctionne bien. En cliquant sur l'un des liens "Randomiser", la paire en question sera randomisée, tandis que les autres paires de sélections resteront telles quelles.
Le problème se situe au niveau de la onClick
alerte/contrôle sur le lien : comme les liens sont toujours "à l'écoute" du clic, même si l'utilisateur clique sur "Annuler", la randomisation des sélections a toujours lieu.
Ce que je recherche, c'est un moyen de placer une alerte sur le lien qui donnera à l'utilisateur la possibilité d'empêcher la fonction de randomisation de se déclencher si le choix est "Annuler" ou similaire.
Mes compétences en codage javascript ne sont pas très bonnes, mais je suppose que le code du lien en ligne ne peut pas être modifié pour cela, parce que les liens sont toujours "à l'écoute" de tout type de clic, et que la fonction javascript elle-même devrait être modifiée pour permettre le placement d'une alerte dans le lien qui peut annuler la randomisation ou l'autoriser à se dérouler.
jQuery(document).ready(function() {
jQuery("#randomSelect1").click(function() {
var select = document.getElementById('pair_1_phrase');
var items = select.getElementsByTagName('option');
var index = Math.floor(Math.random() * items.length);
select.selectedIndex = index;
var select = document.getElementById('pair_1_descriptor');
var items = select.getElementsByTagName('option');
var index = Math.floor(Math.random() * items.length);
select.selectedIndex = index;
});
jQuery("#randomSelect2").click(function() {
var select = document.getElementById('pair_2_phrase');
var items = select.getElementsByTagName('option');
var index = Math.floor(Math.random() * items.length);
select.selectedIndex = index;
var select = document.getElementById('pair_2_descriptor');
var items = select.getElementsByTagName('option');
var index = Math.floor(Math.random() * items.length);
select.selectedIndex = index;
});
//8 more pairs like this..
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="pair_1_phrase" id="pair_1_phrase">
<option value="0">State</option>
<option value="1">Condition</option>
<option value="2">Health</option>
<option value="3">Strength</option>
</select>
<select name="pair_1_descriptor" id="pair_1_descriptor">
<option value="0">moderate</option>
<option value="1">great</option>
<option value="2">good</option>
<option value="3">superior</option>
</select>
<p><a onClick="return confirm('Randomise these selects?');" id="randomSelect1" href="#">Randomise</a></p>
<select name="pair_2_phrase" id="pair_2_phrase">
<option value="0">Requirement</option>
<option value="1">Need</option>
<option value="2">Lack</option>
<option value="3">Necessity</option>
</select>
<select name="pair_2_descriptor" id="pair_2_descriptor">
<option value="0">urgent</option>
<option value="1">pressing</option>
<option value="2">extreme</option>
<option value="3">crucial</option>
</select>
<p><a onClick="return confirm('Randomise these selects?');" id="randomSelect2" href="#">Randomise</a></p>
<!-- 8 more pairs like this.. -->