gpt4 book ai didi

javascript - 更新 jqbootstrapvalidation 匹配以仅在表单提交时进行验证

转载 作者:行者123 更新时间:2023-11-28 02:06:57 25 4
gpt4 key购买 nike

如何更改 jqbootstrapvalidation 的匹配以仅在表单提交时匹配。就像进行必填字段匹配一样。假设我有一个密码并重新输入密码字段。当我单击密码字段时,它在重新输入密码的错误框中显示“匹配验证失败”

    <!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>

我如何进行更改,以便匹配验证仅适用于表单提交。任何帮助将不胜感激。

提前非常感谢。

最佳答案

我通过编辑jqBootstrapvalidation.js来完成此操作。在 validation.validation 上,params.submitting 确定它是提交。

我需要执行 ajax,并具有 BD 访问权限。因此,我创建了一个新的“验证器”(在 validatorTypes: ajax_v2 中),并使用新属性 (somenteSubmit) 来指示它仅在提交时使用。

在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>

关于javascript - 更新 jqbootstrapvalidation 匹配以仅在表单提交时进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17641766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com