Javascript html在函数退出时消失

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中:

我在现场做一些验证。我首先运行一个ajaxget来触发一个MVC操作结果,它将发现该字段是否有效。然后我使用.addClass和.html在字段上方设置验证消息。发生的情况是,验证消息显示在.html之后,但一旦传递了结尾的大括号(即函数退出),验证消息就会消失

为什么结尾的花括号会导致我的验证消息消失

这是我的密码:

字段初始化(在.js文件顶部)

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添加了一个手表,它具有正确的值。