Ich möchte ein Formular in einem Bootstrap-Modal validieren, ohne ein Framework zu verwenden. Es ist eigentlich ein einfaches Modal mit nur einem Eingabetext und zwei Buttons "Close" und "Send". Der Benutzer sollte seinen/ihren Namen in das Eingabefeld eingeben und auf Senden klicken. Das Formular wird mit dem Methodenpost gesendet.Eingabetext im Bootstrap-Modal validieren
Was ich tun möchte ist, dass, wenn der Benutzer nichts in das Eingabefeld eingibt und auf den Button "Senden" klickt, sollte das Eingabefeld einen roten Rahmen haben, der es anstelle des blauen Standardrahmens umkreist . Hier ist der Code für meine modal:
<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>
Ich habe versucht, mit Hilfe von Javascript die Klasse des eingegebenen Textes zu has-error
ändern, aber es nicht der roten Umrandung erzeugen. Wenn ich auf senden klicken sendet er den leeren Wert durch die post-Methode statt Hier ist mein Javascript-Code:
<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>
Ich fühle mich wie ich hier eine ganze Menge Dinge mischen bin. Ich bin noch neu zu Bootstrap und Javascript. Wie kann ich den gewünschten roten Umriss erhalten? Danke.
Edit: Validate Funktion:
function validate() {
var x = document.forms["myForm"]["firstname"].value;
if (x == null || x == "") {
return false;
}
}
Danke für Ihre Hilfe. Ich habe ein oder zwei Dinge verstanden. Ich habe Ihren Code versucht, aber die Eingabe ist von Anfang an rot umrandet. Ich glaube, ich habe mich nicht gut ausgedrückt. Ich möchte, dass die Eingabe nur nach dem Klicken auf den Senden-Button rot umrandet wird. Wenn die Eingabe leer ist und der Benutzer auf die Schaltfläche Senden klickt, sollte die Eingabe rot umrissen werden. – mkab
Ich sehe, ich habe den 'HTML'-Code nur um Ihnen zu zeigen, wo im' DOM' die 'has-error' CSS-Klasse stehen soll. Sie benötigen nur das JavaScript, nicht das HTML. Der Anfangszustand von sollte nicht die 'has-error' Klasse haben. –
Oh ok, ich verstehe. Das Formular wird dennoch übermittelt, selbst wenn der Eingabetext leer ist. Vielleicht sollte ich die Standardaktion des Formulars verhindern, da das Formular eine Post-Methode verwendet. Wie kann ich das tun? – mkab