Ciao, ho bisogno di aiuto per una libreria che non sta più funzionando.
La libreria è la validate() che funziona con jquery e permette in modo semplice e facile di validare un form... in teoria!
Anzi, anche in pratica ma non questa volta.
In pratica ho costruito un pagina dove un amministratore di sistema può aggiungere un utente, e tramite un semplice form inserirne i dati, solitamente account ( e qui tramite jquery UI avviene un controllo sul nome inserito, per evitare di inserirlo due volte ) nome, cognome e infine la password ( da ripetere due volte per non sbagliare ).
In pratica la validazione non avviene, ma viene sempre lanciato il form ( metodo post ) con i dati inseriti fino a quel momento, senza considerare minimamente la validazione.
Un po' di codice, poco perché il file originale consta per ora, di soli 17 KB, più js esterni e css, va be che si trova in una intranet
Ultima condizione, uso il framework Bootstrap, per non farmi mancare nulla.
Dunque: HTML.
Quindi il javascript che prosegue sotto l'HTML.
Ora, così com'è qualunque cosa inserisca nel form , mi viene sempre rimandato un POST coni seguenti dati:
Se elimino l'oggetto submitHandler() il form viene inviato con i dati giusti, o meglio quelli inseriti ma senza validazione.
Non ci sto capendo una cippa
se ci riuscite, mi date una mano?
La libreria è la validate() che funziona con jquery e permette in modo semplice e facile di validare un form... in teoria!
Anzi, anche in pratica ma non questa volta.
In pratica ho costruito un pagina dove un amministratore di sistema può aggiungere un utente, e tramite un semplice form inserirne i dati, solitamente account ( e qui tramite jquery UI avviene un controllo sul nome inserito, per evitare di inserirlo due volte ) nome, cognome e infine la password ( da ripetere due volte per non sbagliare ).
In pratica la validazione non avviene, ma viene sempre lanciato il form ( metodo post ) con i dati inseriti fino a quel momento, senza considerare minimamente la validazione.
Un po' di codice, poco perché il file originale consta per ora, di soli 17 KB, più js esterni e css, va be che si trova in una intranet

Ultima condizione, uso il framework Bootstrap, per non farmi mancare nulla.
Dunque: HTML.
Codice:
<!-- Dati utente -->
<h3 id="dati-riportati">Dati riportati</h3>
<div class="form-group">
<label for="account" class="col-sm-2 control-label">Account</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="account" name="account" placeholder="nome.cognome" value="<?php echo $input['account']; ?>" aria-describedby="helpBlock-Account">
<span id="helpBlock-Account" class="help-block">Inserisci un nuovo account nella forma richiesta.</span>
</div>
</div>
<div class="form-group">
<label for="titolo" class="col-sm-2 control-label">Nome e cognome</label>
<div class="col-sm-10">
<div class="row">
<div class="col-sm-2">
<input type="text" class="form-control" id="titolo" name="titolo" placeholder="Signor, Signora ... Dottor, Dottoressa" value="<?php echo $input['titolo']; ?>">
</div>
<div class="col-sm-5">
<input type="text" class="form-control" id="nome" name="nome" placeholder="Mario" value="<?php echo $input['nome']; ?>">
</div>
<div class="col-sm-5">
<input type="text" class="form-control" id="cognome" name="cognome" placeholder="Rossi" value="<?php echo $input['cognome']; ?>">
</div>
</div>
</div>
</div>
<!-- Password -->
<div class="form-group">
<label for="password" class="col-sm-2 control-label">Inserisci la password</label>
<div class="well col-sm-10">
<div class="row">
<div class="col-sm-6">
<div class="input-group">
<input type="text" class="form-control" id="password1" name="password1" value="">
<span class="input-group-btn">
<button class="btn btn-success" id="generatore" type="button"><span class="fa fa-cog" aria-hidden="true"></span> Genera</button>
</span>
</div>
<span class="helpBlock-P1">Inserisci una password.</span>
</div>
<div class="col-sm-6">
<input type="text" class="form-control" id="password2" name="password2" value="">
<div class="helpBlock-P2">Ripeti la password.</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-success btn-block" name="add" value="aggiungi">
<span class="fa fa-user-plus" aria-hidden="true"></span> AGGIUNGI</span>
</button>
</div>
</div>
Quindi il javascript che prosegue sotto l'HTML.
Codice:
$( document ).ready( function() {
$( '#account' ).autocomplete({
source: 'suggestionAdmin-Nomi.get.php',
minLength: 3,
autoFill: true,
max:30,
formatItem: function ( row ) { return row[0] + " (" + row[2] + ", " + row[1] + ")" + " "+row[5]; },
formatMatch: function ( row ) { return row[0]; },
formatResult: function ( row ) { return row[0]; }
});
$('#account').focus();
jQuery.validator.addMethod("valueNotEquals", function(value, element, arg){
return arg !== value;
}, "Le due password devono necessariamente essere uguali.");
jQuery.validator.addMethod("username_rule", function(value, element) {
return this.optional(element) || /^[a-z \.]{2,50}$/i.test(value);
}, "Inserisci solo lettere da a alla z e spazi.");
$('form').validate(
{
rules:
{
account:
{
required: true,
username_rule: true
},
nome: {
required: true,
minlength: 2,
username_rule: true
},
cognome: {
minlength: 2,
username_rule: true
},
anno: {
valueNotEquals: '-1'
},
password1: {
minlength: 5,
required: true
},
password2: {
required: true,
equalTo: '#password1'
}
},
highlight: function (element) {
$(element).closest('.form-group').removeClass('has-success').addClass('has-error');
},
unhighlight: function (element) {
$(element).closest('.form-group').removeClass('has-error').addClass('has-success');
},
submitHandler: function(form) {
var h = '<input type="hidden" name="h1" value="' + hex_sha512($('#password1').val()) + '">';
h += '<input type="hidden" name="h2" value="' + hex_sha512($('#password2').val()) + '">';
$('#helpBlock-P2').append(h);
h = null;
$('#password1').val('Yahoo!');
$('#password2').val('Google');
form.submit();
}
});
Cioè non vengono inseriti i dati del form, ma viene creato un "search" che francamente mi manca nei dati inviati ( ho fatta la ricerca in tutto il listato, ma non esiste quella parola in tutto il file ) e il resto scompare, tra l'altro senza validare nulla.POST:
array(2) {
["search"]=>
string(0) ""
["add"]=>
string(8) "aggiungi"
}
Se elimino l'oggetto submitHandler() il form viene inviato con i dati giusti, o meglio quelli inseriti ma senza validazione.
Non ci sto capendo una cippa
