è possibile chiamare la convalida del modulo attivo a livello di codice tramite javascript? Devo chiamare la procedura di convalida prima di eseguire alcune operazioni Ajax.trigger validazione modulo attivo manualmente prima dell'invio
risposta
Sì, è possibile, si dovrebbe provare questo:
$('#form-id').yiiActiveForm('validate');
credo di essere un po 'in ritardo con una risposta qui, ma ho appena avuto la stessa domanda e la soluzione da soju non ha funzionato neanche per me .
Così ho guardato un po 'più in profondità il codice JS di ActiveForm e ho scoperto che sembra monitorare lo stato di ogni campo in una variabile e se il campo è "intatto" la convalida non viene attivata, a meno che non invii il forma attuale. Così ho cambiato la mia chiamata a questo:
var $form = $("#my-form"),
data = $form.data("yiiActiveForm");
$.each(data.attributes, function() {
this.status = 3;
});
$form.yiiActiveForm("validate");
Questo ora sembra funzionare come mi aspetto.
Non sono sicuro del motivo per cui questa risposta non è accettata poiché è la prima cosa che ha funzionato come previsto. – Edna
Grazie zed blu, ma prima di questo - da aggiungere campo modulo, u bisogno di fare questa roba ...
// il vostro input
$inputData = $form->field($model,"prductName");
// questo rimuovere riga successiva & convertire le doppie virgolette con quotazioni singole
$newInputData= trim(preg_replace('/\s+/', ' ',str_replace('"',"'", $inputData)));
// quindi aggiungere come questo
0.123.$("#table").append("'.$newInputData.'");
// questo ha lavorato per me insieme con la soluzione Zend blu come questo qui sotto
$this->registerJs('
$(document).on("click","input[type=text]",function(){
var $form = $("#w0"),
data = $form.data("yiiActiveForm");
$.each(data.attributes, function() {
this.status = 3;
});
$form.yiiActiveForm("validate");
});
');
questo è lavorato per me
$this->registerJs("
$('body').on('beforeSubmit', 'form#product-form', function() {
var form = $(this);
// return false if form still have some validation errors
if (form.find('.has-error').length) {
return false;
}
// submit form
$.ajax({
url: form.attr('action'),
type: 'post',
data: form.serialize(),
success: function (response) {
}
});
return false;
}); ");
Possiamo ottenere che attraverso la fusione @BlueZed e @S La risposta di Rana.
È possibile scrivere sotto lo script, in modo che possiamo verificare che se il modulo ha qualche errore in esso, il modulo non verrà inviato (Anche Funzionerà per modulo tabellare (procedure guidate)).
var $form = $("#form"),
data = $form.data("yiiActiveForm");
$.each(data.attributes, function() {
this.status = 3;
});
$form.yiiActiveForm("validate");
if ($("#form").find(".has-error").length) {
return false;
}
La convalida viene attivata quando si invia il modulo. Così, questo funzionerà:
$form.data('yiiActiveForm').submitting = true;
$form.yiiActiveForm('validate', false);
Il secondo argomento validate
è chiamato forceValidate
.
Per convalidare manualmente da javascript, è necessario inserire il seguente codice alla fine del modulo di invio evento.
return $('#your-form-id').yiiActiveForm('validate');
Per gli utenti alle prime armi,
$('#your-form-id').submit(function() {
return $('#your-form-id').yiiActiveForm('validate');
});
Si noti inoltre che è necessario specificare form id sul ActiveForm
come qui di seguito
<?php $form = ActiveForm::begin(['id' => 'd4d-hub-form']); ?>
ho avuto lo stesso problema. E non sono chiaramente una soluzione nella documentazione ufficiale e non so perché nessuna soluzione su Stackoverflow non funzioni per me. Possono essere nelle diverse versioni di yii2 ci sono diversi modi per farlo. Ho impiegato molto tempo per trovare una soluzione. Nel mio caso ho innescato la convalida per l'ingresso individuale sul modulo:
$('#form-id').data('yiiActiveForm').submitting = false;
$('#form-id').yiiActiveForm('validateAttribute', 'input-id'); //this will triger validation for input with id 'input-id'
$('#form-id').yiiActiveForm('validateAttribute', 'other-input-id'); //this will triger validation for input with id 'other-input-id'
prega di notare secondo parametro della funzione yiiActiveForm() non è il selettore e non è il nome di un attributo è id di ingresso di attributo! !!
- 1. trigger jQuery Autocomplete manualmente
- 2. MySQL Trigger attivo dopo l'inserimento
- 3. validazione modulo asincrono angolare2
- 4. AngularJS trigger personalizzati formare validazione sul cambiamento del modello
- 5. validazione modulo jquery multi step
- 6. AngularJS ng-repeat e validazione modulo
- 7. validazione jquery: impedisci il modulo di invio
- 8. Validazione modulo e campi aggiunti con $ compile
- 9. Componente FuelUX Wizard: come selezionare manualmente il passaggio attivo?
- 10. Trigger MySQL prima del valore Inserimento Controllo
- 11. Django's ModelForm validazione unique_together
- 12. Come attivare manualmente l'invio di un modulo in AngularJS?
- 13. Sul trigger di invio modulo non funzionante
- 14. Trigger convalida del modulo jQuery solo se il modulo è già stato inviato?
- 15. Come forzare lo stato attivo su un componente prima che venga mostrato il modulo
- 16. Completamento automatico del trigger senza inviare un modulo
- 17. asp.net MVC 3 - modulo ajax presentare e validazione
- 18. modulo di validazione in modalità tabella con javascript
- 19. Validazione dei campi non presenti nel modulo ma nell'entità
- 20. Rails 3: validazione form_tag
- 21. focusout() e trigger ('focusout') non causano input per perdere lo stato attivo
- 22. Come convalidare prima del trigger di inserimento in sqlite
- 23. differenza prima e dopo il trigger in Oracle
- 24. Come creare un trigger prima di eliminare in SQL Server?
- 25. CREATE TRIGGER deve essere la prima istruzione in un batch
- 26. Esecuzione di una funzione poco prima di $ (document) .ready() trigger
- 27. cakePHP: come set di validazione errore di campo di input manualmente controller
- 28. Validazione di ViewModels annidati
- 29. jQuery.ajax - invia tutti gli elementi nel modulo senza inserirli manualmente
- 30. Come installare manualmente un modulo Pypi senza pip/easy_install?
Ciao, grazie per la risposta. Ho provato il codice sopra ma non riesco ancora a eseguire la convalida del modulo. Non vengono restituiti errori javascript e se provo ad avvisare il risultato mi ha dato "undefiend". – AleCat83
Questo metodo convalida gli input del modulo e visualizza gli errori corrispondenti, non restituisce nulla ... – soju
Posso caricare altre configurazioni o risorse per farlo funzionare? Ho provato a eseguire il codice precedente (con il mio ID modulo) ma la convalida non viene eseguita .. – AleCat83