使用 jQuery 验证并尝试在标签无效时突出显示标签

Using jQuery Validate and trying to get the label highlighted when it's not valid

本文关键字:标签 无效 显示 验证 jQuery 使用      更新时间:2023-09-26

(TLDR:请参阅我在底部的编辑(

我正在使用jQuery验证,一切都已设置并为验证部分工作。但是,我有单选按钮,当用户没有从该单选按钮组中选择一个选项时,我试图让它们的label red突出显示。

验证适用于单选按钮,但是我无法突出显示标签正常工作。

我有两个问题:

  1. 在初始页面加载时,它是无效的,因为用户没有推送提交,所以使用我当前的代码,标签在初始页面加载时显示为红色。

  2. 当用户单击单选按钮时,它不会更改回黑。

我的代码:

    var rules = {
        rules: {
            RadioButton: { required: true },                
        },
        messages: {
            RadioButton: { required: "Please select an option" },                
        },
        highlight: function (input) {
            $(input).addClass("error");
        },
        unhighlight: function (input) {
            $(input).removeClass("error");
        },
        errorLabelContainer: "#errMessage",
        errorClass: "invalid-inputs",
        errorPlacement: function (error, element) {
            error.attr("id", "errMessage");
        }
    };
    $('#form').validate(rules);

下面的代码是我在突出显示或取消突出显示该标签方面所做的:

 var validator = $('#form').validate().check('#RadioButton');
            if (!validator) {               
    $('#form').find('div[id="label"]').addClass().css({ 'color': 'red' });
        }
    if (validator) {  
$('#form').find('div[id="label"]').addClass().css({ 'color': 'black' });
    }

使用上面的代码,我知道var validator正在工作,因为当我将该代码粘贴到开发工具中时,它会在正确的场景中返回truefalse

该 HTML:

 <div class="label" id="label">Selection</div>

我试图让Selection变得突出显示。

这是为我

提供了最接近我想要实现的结果的代码,但它仍然不起作用。我尝试搜索jQuery Docs,Stack Overflow和其他资源。我已经用尽了我所有的选择,所以我希望这里有人可以提供帮助。

提前感谢!

编辑:

我已经取得了一些进展...

rules highlight:下,我添加了以下内容:

$('#form').find('div[id="label"]').addClass().css({ 'color': 'red' });

unhighlight:下,我添加了同样的东西,但是'color : 'black'.

这是"某种"工作。我删除了validator下面的所有代码。

如果有任何错误,它基本上会变成red,它还让我在页面变red之前单击该页面。如果我摆脱了一个错误,它会立即变回black

我不完全确定如何定位特定的RadioButton验证rule,并且仅根据是否已验证将其blackred。我也不确定为什么它会让我在触发该Selection文本以red之前单击该页面,但在验证某些内容后它会立即black

我试过这个:

if($('#RadioButton').valid() == false){ //Do the color change }

相反,如果它是true,但这似乎只是使页面崩溃。

第一个问题:

使用一个变量来跟踪用户是否与表单交互(脏(,我更喜欢在点击时进行

第二个问题:

$('#RadioButton').click(function() { } )

单击按钮后,评估表单。

通过选择,由于 ID 在html5中应该是唯一的,您可以简单地执行以下操作:

$('#label').addClass('highlighted')

我通过将其添加到highlightunhighlight字段中来解决此问题:

if ($("#RadioButton").attr("class") === "error") {
        return $('#label').css({ 'color': 'red' });
   }

然后:

if ($("#RadioButton").attr("class") !== "error") {
        return $('#label').css({ 'color': 'black' });
   }

我认为这是最简单的方法...验证插件将错误类添加到元素中,所以为什么不直接搜索元素,获取class,然后比较它是否等于您希望它等于的。然后,在这种情况下,将元素标签的颜色更改为 black