2013-07-14 2 views
1

Как я могу изменить соответствие jqbootstrapvalidation, чтобы оно совпало только с формой submit. как и совпадение требуемых полей. скажем, у меня есть пароль и пароль для ввода пароля. когда я нажимаю на поле пароля он говорит в ошибке коробке перепечатывать пароль, «проверка соответствия не удалась»Обновление jqbootstrapvalidation для проверки только на форме submit

<!DOCTYPE html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 

    <!--<script type="text/javascript" src="js/jquery.js"></script>--> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script type="text/javascript" src="js/test.js"></script> 
    <script> 
     $(function() { $("input,select,textarea").not([type=submit]").jqBootstrapValidation(); });</script><title</title></head><body> 

    <form class="form-horizontal"> 



     <div class="control-group"> 
      <label class="control-label">Password</label> 
      <div class="controls"> 
       <input type="password" name="password1" required="required" /> 
       <p class="help-block"></p> 

      </div> 

     </div> 

     <div class="control-group"> 
      <label class="control-label">Retype Password</label> 
      <div class="controls"> 
       <input type="password" data-validation-match-match="password1" name="password2" required="required" /> 
       <p class="help-block"></p> 

      </div> 

     </div> 

     Submit: <input type="submit" name="submitbtn" id="submitbtn" value="submit" /> 
    </form> 

</body> 

</html> 

как я могу внести изменения, так что проверка матча применяется только по форме представить. любая помощь будет высоко оценена.

Большое спасибо заранее.

+0

u получил ответ ???? – shajin

ответ

1

Я сделал это, отредактировав jqBootstrapvalidation.js. validation.validation, params.submitting определяет, что это товар.

Мне нужно было выполнить ajax с доступом BD. Поэтому я создал новый «валидатор» (в validatorTypes: ajax_v2), с новым свойством (somenteSubmit), чтобы указать, что он используется только в submit.

В начало JS, в том числе новый вариант:

(function($){ 

    var createdElements = []; 

    var defaults = { 
     options: { 
      somenteSubmit:false,//indicates the validator will happen only in submit 
      prependExistingHelpBlock: false, 
      sniffHtml: true, // sniff for 'required', 'maxlength', etc 
      preventSubmit: true, // stop the form submit event from firing if validation fails 
      submitError: false, // function called if there is an error when trying to submit 
      submitSuccess: false, // function called just before a successful submit event is sent to the server 
      semanticallyStrict: false, // set to true to tidy up generated HTML output 
      autoAdd: { 
       helpBlocks: true 
      }, 
      filter: function() { 
       // return $(this).is(":visible"); // only validate elements you can see 
       return true; // validate everything 
      } 
     }, 

в validation.validation:

 // ============================================================= 
     //             VALIDATION 
     // ============================================================= 

     $this.bind(
     "validation.validation", 
     function (event, params) { 

      var value = getValue($this); 
      var validar = true; 


      // Get a list of the errors to apply 
      var errorsFound = []; 

      $.each(validators, function (validatorType, validatorTypeArray) { 
      if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) { 
       $.each(validatorTypeArray, function (i, validator) { 

        validar=true; 
        if ((!(params && params.submitting)) && (settings.validatorTypes[validatorType].somenteSubmit)) { 
         validar=false; 
        } 

        if (validar){ 
        if (settings.validatorTypes[validatorType].validate($this, value, validator)) { 
         errorsFound.push(validator.message); 
        } 
       } 
       }); 
      } 
      }); 

      return errorsFound; 
     } 
    ); 

На ValidatorTypes:

ajax_v2: { 
     name: "ajax_v2", 
     init: function ($this, name) { 
     return { 
      validatorName: name, 
      url: $this.data("validation" + name + "Ajax_v2"), 
      lastValue: $this.val(), 
      lastValid: true, 
      lastFinished: true 
     }; 
     }, 
     validate: function ($this, value, validator) { 

      validator.lastValue = value; 
      validator.lastValid = true; 
      validator.lastFinished = false; 
      var resultado= $.ajax({ 
       url: validator.url+value, 
       data: ({}), 
       dataType: "html", 
       async :false 
      }).responseText; ; 

      if (resultado=="true") { 
       return true; 

      }else { 
       return false; 

      } 
     }, 
     blockSubmit: true, 
     somenteSubmit:true //execute this new validator only in submit . 
    }, 

JSP:

   <td>Login</td> 
       <td> 
        <div class="control-group"> 
         <div class="controls"> 
          <input class="form-control" type="text" autofocus="" id="login" name="usuario.login" value="${usuario.login}" size="25" placeholder="Login" required="" 
          data-validation-regex-regex="^[A-Za-z\d]{8,10}$" 
          data-validation-regex-message="O Login deve conter entre oito a dez caracteres (letras ou números)." 
          data-validation-nevermatches-nevermatch="usuario.idCliente" 
          data-validation-nevermatches-message="Login não deve ser igual ao Cartão." 

          data-validation-ajax_v2-ajax_v2="${pageContext.request.contextPath}/pesquisaLogin/" 
          data-validation-ajax_v2-message="Login já existente. Favor informar outro Login." 
          > 
          <div class="help-block"></div> 

         </div> 
        </div> 
       </td> 
Смежные вопросы