Heim >Web-Frontend >js-Tutorial >Detailliertes Beispiel für die Bootstrap-Formularvalidierung formValidation

Detailliertes Beispiel für die Bootstrap-Formularvalidierung formValidation

PHPz
PHPzOriginal
2018-05-14 16:39:387816Durchsuche

In diesem Artikel wird hauptsächlich die Bootstrap-Formularvalidierung vorgestellt, um die dynamische Formularvalidierungsfunktion zu implementieren. Freunde, die sie benötigen, können sich auf das Bootstrap-Tutorial

Dynamisches Hinzufügen beziehen Eingabe und dynamisch Neue Verifizierungsmethode hinzufügen!

Init-Status:

Detailliertes Beispiel für die Bootstrap-Formularvalidierung formValidation

Nach dem Klicken auf „+“:

Detailliertes Beispiel für die Bootstrap-Formularvalidierung formValidation

Nach der Überprüfung:

Detailliertes Beispiel für die Bootstrap-Formularvalidierung formValidation

Wissenspunkte:

1 Gehen Sie zunächst zum Herunterladen auf die offizielle Website: formvalidation.io/

2. Importieren Sie die Datei. Ich werde nicht näher auf die Vorsichtsmaßnahmen eingehen, die ich bereits im Artikel zur Fernüberprüfung erwähnt habe.

3 Verwendete Schlüsselwörter: addField, removeField, different

4 Beachten Sie, dass die Namen der Beispiele auf der offiziellen Website unterschiedlich sind. Ich bin hier etwas faul. Und wenn das Projekt Ajax ist, wird das Formular nicht für die Übermittlung verwendet, sondern als JSON selbst übermittelt, sodass die Namen von x und y denselben Namen haben.

Ein guter Anfang:

Zuerst muss es im HTML ein „+“ geben, markiert als addPos, und dann muss es ein „-“ geben, markiert als „removPos,

<p id="posXY" class=" panel panel-default ">
<!-- 添加-->
                <p class="panel-heading" >设置车库xy坐标</p>
                <p class="addPos form-group">
                  <p class="col-lg-4 col-sm-4 col-xs-4" >
                    <input type="text" class="form-control text-left" name="garageNo" placeholder="停车库" style="min-width: 150px"/>
                  </p>
                  <p class="col-lg-3 col-sm-3 col-xs-3" >
                    <input type="text" class="form-control" name="posX" placeholder="X"/>
                  </p>
                  <p class="col-lg-3 col-sm-3 col-xs-3" >
                    <input type="text" class="form-control" name="posY" placeholder="Y"/>
                  </p>
                  <p class="col-lg-2 col-sm-2 col-xs-2" >
                    <button type="button" class="btn btn-default addButtonPos"><i class="glyphicon glyphicon-plus"></i></button>
                  </p>
                </p>
                <!-- 删除 -->
                <p class="removPos form-group hide" id="posTemplate">
                  <p class="col-lg-4 col-sm-4 col-xs-4" >
                    <input type="text" class="form-control text-left" name="garageNo" placeholder="停车库" style="min-width: 150px"/>
                  </p>
                  <p class="col-lg-3 col-sm-3 col-xs-3" >
                    <input type="text" class="form-control" name="posX" placeholder="X"/>
                  </p>
                  <p class="col-lg-3 col-sm-3 col-xs-3" >
                    <input type="text" class="form-control" name="posY" placeholder="Y"/>
                  </p>
                  <p class="col-lg-2 col-sm-2 col-xs-2" >
                    <button type="button" class="btn btn-default removeButtonPos"><i class="glyphicon glyphicon-minus"></i></button>
                  </p>
                </p>
</p>

Dann kommen Sie zu js:

/**
   * pos添加
   * @param $that
   */
  function addButtonPosClick($that){
    var panelId = $that.parents(".topTemplate").attr("id");
    var $form=$(&#39;#&#39;+panelId+"form")
//    defaultPanel(panelId)
    var bookIndex=typeObj[panelId]++;
    console.log(panelId,bookIndex)
    var $template = $(&#39;#&#39;+panelId+&#39; #posTemplate&#39;),
      $clone =$template
        .clone()
        .removeClass(&#39;hide&#39;)
        .removeAttr(&#39;id&#39;)
        .attr(&#39;step&#39;,bookIndex)
        .insertBefore($template);
    // Update the name attributes
    $clone
      .find(&#39;[name="garageNo"]&#39;).attr({"step":bookIndex,"name":"garageNo"+bookIndex})
      .click(function(){
        clickBindGarageNo(panelId,bookIndex)
      }).end()
      .find(&#39;[name="posX"]&#39;).attr("step",bookIndex).end()
      .find(&#39;[name="posY"]&#39;).attr("step",bookIndex).end()
    // Add new fields
    // Note that we also pass the validator rules for new field as the third parameter
//    $(&#39;#defaultForm&#39;)
//    gFieldArr.push(panelId+&#39;[&#39; + bookIndex + &#39;].garageNo&#39;)
    $form
      .formValidation(&#39;addField&#39;, "garageNo"+bookIndex, formObj.sameAs(false))
      .formValidation(&#39;addField&#39;, &#39;posX&#39;, myPosXY)
      .formValidation(&#39;addField&#39;, &#39;posY&#39;, myPosXY)
  }
 function myFormValidation($form){
//    var $form=$("#"+$panelId+"form")
    $form
        .formValidation({
          framework: &#39;bootstrap&#39;,
          locale: &#39;zh_CN&#39;,
          message: &#39;值无效&#39;,
          icon: {
            valid: &#39;glyphicon glyphicon-ok&#39;,
            invalid: &#39;glyphicon glyphicon-remove&#39;,
            validating: &#39;glyphicon glyphicon-refresh&#39;
          },
          fields:
          {
            myimg:{
              validators: {
                notEmpty: {
                  message: &#39;请选择一个文件上传&#39;
                },
                file: {
                  extension: &#39;jpeg,jpg,png&#39;,
                  type: &#39;image/jpeg,image/png&#39;,
                  maxSize: 1*1024 * 1024,
                  message: &#39;该文件必须为jpeg,jpg,png格式和必须不超过1MB的大小&#39;
                }
              }
            }
          }
        })
        .on(&#39;click&#39;, &#39;.addButtonPos&#39;, function() {
          addButtonPosClick($(this))
        })
        //Remove button click handler
        .on(&#39;click&#39;, &#39;.removeButtonPos&#39;, function() {
          var $that   = $(this)
          var panelId = $that.parents(".topTemplate").attr("id");
//           defaultPanel(panelId)
          var $row = $(this).parents(&#39;.form-group&#39;),
              index = $row.attr(&#39;step&#39;);
//          var myname=&#39;[&#39; +index + &#39;]&#39;
          var bookIndex= typeObj[panelId]--;
//          $(&#39;#defaultForm&#39;)
          $form
                   .formValidation(&#39;removeField&#39;, $row.find(&#39;[name="garageNo&#39;+bookIndex+&#39;"]&#39;))
                   .formValidation(&#39;removeField&#39;, $row.find(&#39;[name="posX"]&#39;))
                   .formValidation(&#39;removeField&#39;, $row.find(&#39;[name="posY"]&#39;))
          // Remove element containing the fields
          $row.remove();
        })

Da mein Projekt mehrere Formulareinreichungen hat, das Geschäft aber ähnlich ist, verwende ich diese Funktionen

Zum Beispiel: var form=(“#”+panelId+”form”) Verwenden Sie panelId. Der Unterschied besteht darin, dass es mehrere Formen gibt.

Wie oben erwähnt, sind die Namen von x und y gleich, aber wenn Sie vorsichtig sind, werden Sie feststellen, dass der Name von garageNo unterschiedlich ist . Warum?

Aus geschäftlichen Gründen können die Werte von garageNo in derselben Form nicht gleich sein. Beispielsweise können Sie und Ihr Schreibtischkollege beide weiblich sein 18 Jahre alt. garageNo:


Was ist dieser diffArr.toString()? Dies ist der

String des Namens der garageNo, den ich durchlaufen habe.

Zum Beispiel: Es gibt 3 Einträge, idx =1 und der Fokus liegt auf 1. Dann diffArr=["garageNo0","garageNo2",]

var differentValid= function(diffstr){
    var vv={
      validators: {
        different: {
          field: diffstr,
          message: &#39;不能有相同的停车库&#39;
        }
      }
    }
    return vv
  }

Beachten Sie einen Fehler: Wenn Sie viele Eingaben verwenden, werden Sie Sie werden feststellen, dass die Eingabe manchmal nicht automatisch überprüft wird. Wenn Sie beispielsweise das Datums-Plugin verwenden, wird die Eingabe nicht überprüft. Zu diesem Zeitpunkt müssen Sie den oben genannten Code zuerst überprüfen eine neue Validierungsmethode und validiert dann das gesamte Formular. Wenn Sie nur eine Eingabe validieren möchten, verwenden Sie bitte:
clickBindGarageNo(panelId,idx){
    $form.formValidation(&#39;addField&#39;, "garageNo"+idx, differentValid(diffArr.toString()))
      var fv =$form.data(&#39;formValidation&#39;);
      fv.validate();
}

Es gibt auch ein Detail zur Übermittlung:

Wenn wir dies nicht tun. Wenn Sie keinen Senden-Button festlegen, wird dieses Plugin die Seite automatisch für Sie senden, wenn Ihr Übermittlungsdienst fehlschlägt.

Detailliertes Beispiel für die Bootstrap-Formularvalidierung formValidationAber manchmal tun wir das nicht. Ich möchte nicht, dass es aktualisiert wird.

Ich verwende lieber eine Schaltfläche im Formular und dann:

[Verwandte Empfehlungen]
$form.formValidation(&#39;revalidateField&#39;, "field");

1.

Kostenloses Javascript-Video-Tutorial

Detaillierte Beispiele für häufig verwendete Middleware-Body-Parser in Nodejs

3 Code für die Implementierung von JavaScript-Formularen
$btn.click(function(){
//....
retrun false;
)}

4. Einzeiliges JS implementiert die Prüfung des mobilen Geldformats

5. Beispiel für die Formularsteuerungsbindung von Vue Tutorial

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel für die Bootstrap-Formularvalidierung formValidation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn