Javascript html在函数退出时消失
我在现场做一些验证。我首先运行一个ajaxget来触发一个MVC操作结果,它将发现该字段是否有效。然后我使用.addClass和.html在字段上方设置验证消息。发生的情况是,验证消息显示在.html之后,但一旦传递了结尾的大括号(即函数退出),验证消息就会消失 为什么结尾的花括号会导致我的验证消息消失 这是我的密码: 字段初始化(在.js文件顶部):Javascript html在函数退出时消失,javascript,jquery,ajax,asp.net-mvc,validation,Javascript,Jquery,Ajax,Asp.net Mvc,Validation,我在现场做一些验证。我首先运行一个ajaxget来触发一个MVC操作结果,它将发现该字段是否有效。然后我使用.addClass和.html在字段上方设置验证消息。发生的情况是,验证消息显示在.html之后,但一旦传递了结尾的大括号(即函数退出),验证消息就会消失 为什么结尾的花括号会导致我的验证消息消失 这是我的密码: 字段初始化(在.js文件顶部): var $postalCode = $("#AccountBaseModel\\.Person\\.PostalCode"); 在HTML中:
var $postalCode = $("#AccountBaseModel\\.Person\\.PostalCode");
在HTML中:
<div class="content-block__fourth-column">
@Html.LabelFor(x => x.AccountBaseModel.Person.PostalCode)
@Html.ValidationMessageFor(x => x.AccountBaseModel.Person.PostalCode)
@Html.TextBoxFor(x => x.AccountBaseModel.Person.PostalCode, new { id = "AccountBaseModel.Person.PostalCode", @class = "form-control" })
</div>
$form.submit(function () {
//if not all the fields are entered (or the datestring is totally invalid) set it back to empty to cause validation
if ($date.val().match(dateRegEx) == null) {
$date.val("");
}
var usPostalValid = true;
var caPostalValid = true;
jQuery.ajaxSetup({ async: false });
if ($postalCode != null) {
$.get('/api/NCP/ValidatePostalCode', { postalCode: $postalCode.val() }, function (data) {
if (data.invalidUSPostal) {
usPostalValid = false;
}
if (data.invalidCAPostal) {
caPostalValid = false;
}
});
}
jQuery.ajaxSetup({ async: true });
clearErrorMessage($postalCode);
if (!usPostalValid) {
showErrorMessage($postalCode, 'Invalid US postal code.');
$form.data("isValid", false);
} else if (!caPostalValid) {
showErrorMessage($postalCode, 'Invalid CA postal code.');
$form.data("isValid", false);
} else {
$form.data("isValid", true);
}
//manually validate date and file field (because hidden)
var dateValid = $date.valid();
var promoCheck = checkDatePromo($form, $date, $year, $month, $day, $promoDateTime);
var fileValid = $file.valid();
return dateValid && promoCheck && fileValid && $form.valid() && (usPostalValid && caPostalValid);
});
function clearErrorMessage(element) {
var id = $(element).attr('id');
if (id.indexOf("ShippingPageModel") == 0) {
id = id.replace('_', '.');
}
$(element).closest('.form-group').find("span[data-valmsg-for='" + id + "']").removeClass('field-validation-error').addClass('field-validation-valid').html('');
}
function showErrorMessage(element, message) {
var id = $(element).attr('id');
if (id.indexOf("ShippingPageModel") == 0) {
id = id.replace('_', '.');
}
var validationElement = $(element).closest('.form-group').find("span[data-valmsg-for='" + id + "']");
validationElement.removeClass('field-validation-valid').addClass('field-validation-error').html(message);
} // Once this line is finished executing, the validation message is gone..
clearErrorMessage():
<div class="content-block__fourth-column">
@Html.LabelFor(x => x.AccountBaseModel.Person.PostalCode)
@Html.ValidationMessageFor(x => x.AccountBaseModel.Person.PostalCode)
@Html.TextBoxFor(x => x.AccountBaseModel.Person.PostalCode, new { id = "AccountBaseModel.Person.PostalCode", @class = "form-control" })
</div>
$form.submit(function () {
//if not all the fields are entered (or the datestring is totally invalid) set it back to empty to cause validation
if ($date.val().match(dateRegEx) == null) {
$date.val("");
}
var usPostalValid = true;
var caPostalValid = true;
jQuery.ajaxSetup({ async: false });
if ($postalCode != null) {
$.get('/api/NCP/ValidatePostalCode', { postalCode: $postalCode.val() }, function (data) {
if (data.invalidUSPostal) {
usPostalValid = false;
}
if (data.invalidCAPostal) {
caPostalValid = false;
}
});
}
jQuery.ajaxSetup({ async: true });
clearErrorMessage($postalCode);
if (!usPostalValid) {
showErrorMessage($postalCode, 'Invalid US postal code.');
$form.data("isValid", false);
} else if (!caPostalValid) {
showErrorMessage($postalCode, 'Invalid CA postal code.');
$form.data("isValid", false);
} else {
$form.data("isValid", true);
}
//manually validate date and file field (because hidden)
var dateValid = $date.valid();
var promoCheck = checkDatePromo($form, $date, $year, $month, $day, $promoDateTime);
var fileValid = $file.valid();
return dateValid && promoCheck && fileValid && $form.valid() && (usPostalValid && caPostalValid);
});
function clearErrorMessage(element) {
var id = $(element).attr('id');
if (id.indexOf("ShippingPageModel") == 0) {
id = id.replace('_', '.');
}
$(element).closest('.form-group').find("span[data-valmsg-for='" + id + "']").removeClass('field-validation-error').addClass('field-validation-valid').html('');
}
function showErrorMessage(element, message) {
var id = $(element).attr('id');
if (id.indexOf("ShippingPageModel") == 0) {
id = id.replace('_', '.');
}
var validationElement = $(element).closest('.form-group').find("span[data-valmsg-for='" + id + "']");
validationElement.removeClass('field-validation-valid').addClass('field-validation-error').html(message);
} // Once this line is finished executing, the validation message is gone..
showErrorMessage():
<div class="content-block__fourth-column">
@Html.LabelFor(x => x.AccountBaseModel.Person.PostalCode)
@Html.ValidationMessageFor(x => x.AccountBaseModel.Person.PostalCode)
@Html.TextBoxFor(x => x.AccountBaseModel.Person.PostalCode, new { id = "AccountBaseModel.Person.PostalCode", @class = "form-control" })
</div>
$form.submit(function () {
//if not all the fields are entered (or the datestring is totally invalid) set it back to empty to cause validation
if ($date.val().match(dateRegEx) == null) {
$date.val("");
}
var usPostalValid = true;
var caPostalValid = true;
jQuery.ajaxSetup({ async: false });
if ($postalCode != null) {
$.get('/api/NCP/ValidatePostalCode', { postalCode: $postalCode.val() }, function (data) {
if (data.invalidUSPostal) {
usPostalValid = false;
}
if (data.invalidCAPostal) {
caPostalValid = false;
}
});
}
jQuery.ajaxSetup({ async: true });
clearErrorMessage($postalCode);
if (!usPostalValid) {
showErrorMessage($postalCode, 'Invalid US postal code.');
$form.data("isValid", false);
} else if (!caPostalValid) {
showErrorMessage($postalCode, 'Invalid CA postal code.');
$form.data("isValid", false);
} else {
$form.data("isValid", true);
}
//manually validate date and file field (because hidden)
var dateValid = $date.valid();
var promoCheck = checkDatePromo($form, $date, $year, $month, $day, $promoDateTime);
var fileValid = $file.valid();
return dateValid && promoCheck && fileValid && $form.valid() && (usPostalValid && caPostalValid);
});
function clearErrorMessage(element) {
var id = $(element).attr('id');
if (id.indexOf("ShippingPageModel") == 0) {
id = id.replace('_', '.');
}
$(element).closest('.form-group').find("span[data-valmsg-for='" + id + "']").removeClass('field-validation-error').addClass('field-validation-valid').html('');
}
function showErrorMessage(element, message) {
var id = $(element).attr('id');
if (id.indexOf("ShippingPageModel") == 0) {
id = id.replace('_', '.');
}
var validationElement = $(element).closest('.form-group').find("span[data-valmsg-for='" + id + "']");
validationElement.removeClass('field-validation-valid').addClass('field-validation-error').html(message);
} // Once this line is finished executing, the validation message is gone..
“$postalCode”来自哪里?这些是“个人”和postalCode类名吗$(“#AccountBaseModel\\.Person\.PostalCode”);如果他们是,你为什么要逃避他们?您可以在这里发布您的HTML,请将CountBaseModel和Person作为模型类的属性。我之所以转义是因为我设置的ID有句点,jQuery要求您转义句点。我输入了那个ID,因为如果不是这样的话,消息就不起作用了。它在ID上进行匹配,出于某种原因,它必须有句点。。我为邮政编码字段添加了完整的HTML。好吧,我想当您(console.log($postalCode))时,您得到了正确的值。这就是您所说的吗?是的,在f12开发工具中,我为$postalCode添加了一个手表,它具有正确的值。