Bonjour,
Voila je rencontre un petit problème avec mon code.
je cherche à valider un formulaire dans une fenêtre modale sans rechercher la page. ceci est mon but final, cependant, je n'arrive même pas à empêcher un simple lien de se rediriger.
voici donc le code html simple du lien
test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Castor</title>
<link href="css/bootstrap/bootstrap.min.css" type="text/css" rel="stylesheet">
<link href="css/style.css" type="text/css" rel="stylesheet">
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<header id="header">
<link rel="shortcut icon" type="image/x-icon" href="ressources/favicon.ico" />
</header>
</br></br>
<body>
<a href="delete.php" class="btn btn-danger">Supprimer </a>
<script src="JQuery/jquery.js"></script>
<script src="javascript/app.js"></script>
<script src="css/bootstrap/bootstrap.min.js"></script>
</body>
</html>
Ainsi que mon code app.js
(function($){
$('.btn-danger').on('click',function(e){
e.preventDefault();
alert('test');
})
})(JQuery);
le problème étant que la console m'indique à chaque fois "reference error: JQuery is not defined"
j'ai essayé de supprimer l'ajout de JQuery.js pour voir si cela changeait quelque chose, et dans ce cas, une ligne se rajoute disant que bootstrap nécessite JQuery, me laissant penser que JQuery se charge bien, je ne sais donc pas d'ou vient l'erreur.
merci d'avance pour votre aide
Essai de changer ton evenement.
La tu écoute le click sur un bouton, or, ton bouton est un submit de formulaire.
Tu peux donc faire :
$(document).on('submit', '#reinitialiser', function(event){
alert('ok');
event.preventDefault();
});
Je ne dis pas que ça va résoudre ton problème, mais c'est un moyen plus propre.
Hello,
Je ne connaissais pas (ou alors assez vielle) cette notation pour démarrer un script jQuery.
Essai plutôt ça :
$(document).ready(function(){
$('.btn-danger').on('click',function(e){
e.preventDefault();
alert('test');
});
});
J'ai donc essayé avec la solution de PallMallShow, et cela a fonctionné, juste un problème de syntaxe ou le fait que le document charge mieux le script une fois que la page est chargée?
J'ai donc ensuite essayé de repartir sur mon but initial qui est d'appliquer le principe sur un formulaire dans une fenêtre modale , le code
est donc :
page de la fenêtre modale : (je n'ai pas mis le code entier mais juste la partie modale)
<div class="row">
<div class="col-md-offset-4">
<div>
<div class="modal fade" id="infos">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
</div>
</div>
</div>
le code app.js est le même :
```
$(document).ready(function(){
$('.btn-primary').on('click',function(e){
e.preventDefault();
alert("test");
});
});
et voici le code de la fenêtre modale en elle même :
<center>
<div class="modal-header ">
<button type="button" class="close" data-dismiss="modal">x</button>
<h4 class="modal-title">Réinitialiser le mot de passe</h4>
</div>
<div class="modal-body">
<form id="reinitialiser" action="reinitialisation_mot_de_passe.php">
<div class="clearfix">
<div class="form-group">
<label for="Login" > NNI : </label>
<input type="text" name="login" id="Login" placeholder="NNI" required>
</div>
</div>
<div class="clearfix">
<div class="form-group">
<label for="mail" > Mail : </label>
<input text name="mail" id="mail" placeholder="Mail" required />
</div>
</div>
<button type="submit" class="btn btn-primary">Envoyer</button>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-info" data-dismiss="modal">Annuler</button>
</div>
</center>
<script src="JQuery/jquery.js"></script>
<script src="javascript/app.js"></script>
Et donc, lorsque je valide le formulaire, la redirection agit quand même
apparement, la propreté est la meilleure façon pour que les choses marche.
Cela marche avec la méthode que tu as proposée, je tâcherais de suivre ces syntaxes à partir de maintenant ^^
j'ai essayé ensuite de faire une transmission des valeurs de mon formulaire en php, puis de retourner une reponse json à mon script pour qu'il puisse indiquer que tout c'est bien passé.
le problème est qu'au lieu d'avoir l'alerte de mon script app.js, j'ai un simple echo venant de mon controleur php.
app.js
$(document).on('submit', '#reinitialiser', function(event){
event.preventDefault();
var form = $('#reinitialiser');
var nni = $('#login').val();
var mail = $('#mail').val();
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data : form.serialize(),
datatype: 'json',
success:function(json){
if (json.reponse ==='ok'){
alert('ok');
else {
alert('erreur :' + json.reponse);
}
}
};
});
script php
<?php
if ((isset($_POST['login'])) && (isset($_POST['mail']))) {
if ((!empty($_POST['login'])) && (!empty($_POST['mail']))) {
$reponse ='ok';
}
echo json_encode(['reponse' => $reponse]);
}
?>
Fait un console.log(json) dans la fonction de success afin de voir a quoi elle ressemble.
Tu pourras donc faire le bon choix de la propriété a vérifier si == 'ok' ;)
la console n'indique rien car lorsque je valide, cela me met sur la page du controleur avec le echo json d'afficher ,
je me retrouve donc avec une page blanche marquée : {"reponse":"ok"}