voglio convalidare un modulo in un modal bootstrap senza utilizzare alcun quadro. In realtà è una semplice scelta obbligatoria con un testo unico di ingresso e due pulsanti "Close" e "Invia". L'utente deve digitare il suo/il suo nome nella casella di input e fare clic su Invia. Il modulo è inviato con il metodo post.Convalida testo di input in modal bootstrap
Quello che voglio fare è che, se l'utente non inserisce nulla nella casella di input di e fa clic sul pulsante "Invia", la casella di input dovrebbe avere un bordo rosso che lo circonda invece del bordo blu predefinito . Ecco il codice per il mio modale:
<div id="myModal" class="modal fade" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<!--form-->
<form class = "form-horizontal" id="myForm" method="post" action="test.php" role="form">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">My modal</h4>
</div>
<div class="modal-body">
<p>
Please enter your name:
</p>
<br/>
<div class="form-group">
<div class="col-lg-12">
<label class="control-label" for="firstname">Name</label>
<input type="text" class="form-control required" id="firstname" name="firstname">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button id="myFormSubmit" class="btn btn-primary">Send</button>
</div>
</form>
</div>
</div>
</div>
Ho provato ad utilizzare javascript per cambiare la classe del testo di input per has-error
ma non produce il contorno rosso. Quando clicco su Send It invia il valore vuoto attraverso il metodo POST invece di Ecco il mio codice JavaScript:
<script type="text/javascript">
$('#myForm').validate({
rules: {
name: {
minlength: 1,
required: true
},
},
highlight: function (element) {
$('#firstname').removeClass('has-success').addClass('has-error');
},
success: function (element) {
$('#firstname').removeClass('has-error').addClass('has-success');
}
});
</script>
Mi sento come se stessi mescolare un sacco di cose qui. Sono ancora nuovo di bootstrap e javascript. Come posso ottenere il contorno rosso desiderato? Grazie.
Edit: Convalida funzione:
function validate() {
var x = document.forms["myForm"]["firstname"].value;
if (x == null || x == "") {
return false;
}
}
Grazie per il vostro aiuto. Ho capito una cosa o due. Ho provato il tuo codice ma l'input è delineato in rosso dall'inizio. Penso di non essermi espresso bene. Voglio che l'input sia delineato in rosso solo dopo aver fatto clic sul pulsante di invio. Se l'input è vuoto e l'utente fa clic sul pulsante di invio, allora dovrebbe delineare l'input in rosso. – mkab
Vedo, ho messo il codice 'HTML' solo per mostrarvi dove nel' DOM' dovrebbe essere la classe CSS 'has-error'. È necessario solo il JavaScript non l'HTML. Lo stato iniziale di non dovrebbe avere la classe 'has-error'. –
Oh ok, capisco. Ancora il modulo viene inviato anche se il testo inserito è vuoto. Forse dovrei impedire l'azione predefinita del modulo, perché il modulo sta usando un metodo post. Come posso andare su questo? – mkab