Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery以编程方式删除验证突出显示_Jquery_Jquery Validate - Fatal编程技术网

jQuery以编程方式删除验证突出显示

jQuery以编程方式删除验证突出显示,jquery,jquery-validate,Jquery,Jquery Validate,表单有两个复选框(cbDeclined和cbIsOOfFac)、两个文本字段和一个下拉列表(txtHeight、txtWeight、ddlDevice) 如果选中任一复选框,则其他控件将被禁用,而其他控件的规则不适用。以下是当前的规则: $('form').validate({ highlight: function (element, errorClass) { $(element).addClass("invalidElem"); }, unhighl

表单有两个复选框(cbDeclined和cbIsOOfFac)、两个文本字段和一个下拉列表(txtHeight、txtWeight、ddlDevice)

如果选中任一复选框,则其他控件将被禁用,而其他控件的规则不适用。以下是当前的规则:

$('form').validate({
    highlight: function (element, errorClass) {
        $(element).addClass("invalidElem");
    },
    unhighlight: function (element, errorClass) {
        $(element).removeClass("invalidElem");
    },
    errorPlacement: function (error, element) {
        var parent = element.parent();
        parent.append(error);
    },
    errorElement: "div",
    errorClass: "errorMsg"
});

function HeightWeightCtrlsEnabled() { return !cbDeclined.is(':checked') && !cbIsOOfFac.is(':checked'); }

txtHeight.rules("add", { required: function (element) { return HeightWeightCtrlsEnabled(); }, maxlength: 3, min: 1, digits: true });
txtWeight.rules("add", { required: function (element) { return HeightWeightCtrlsEnabled(); }, maxlength: 4, min: 1, digits: true });
ddlDevice.rules("add", { required: function (element) { return HeightWeightCtrlsEnabled(); } });

function UpdateTextBoxes() {
    var disableCtrls = !HeightWeightCtrlsEnabled();

    txtHeight.prop('disabled', disableCtrls);
    txtWeight.prop('disabled', disableCtrls);
    ddlDevice.prop('disabled', disableCtrls);

    if (disableCtrls) {
        txtHeight.val('');
        txtWeight.val('');
        ddlDevice.val('');
    }
}

cbDeclined.click(function () {

    if (cbDeclined.is(':checked'))
        cbIsOOfFac.attr('checked', false);

    UpdateTextBoxes();
});

cbIsOOfFac.click(function () {

    if (cbIsOOfFac.is(':checked'))
        cbDeclined.attr('checked', false);

    UpdateTextBoxes();
});
当用户在txtWeight中输入一些内容,单击submit以使ddlDevice和txtHeight都高亮显示,因为它们是必需的,然后。。。用户单击cbDeclined和cbIsOOfFac。亮点不会消失。我试图弄清楚如何在高度周围突出显示,然后下降消失

我试图创建一个完全工作的jsFiddler,但是我无法让任何东西工作,尽管一切看起来都是正确的。这是链接(我无法发布链接,所以我对其进行了一些扩展)

jsiddle dot net/scarlton/9hDZQ/12/

如果删除最后一个/12/,您将看到我的第一个版本,它是从真实内容中剪切/粘贴的


根据建议,我尝试添加$('form')。valid();许多地方

当我将其添加到UpdateTextBoxes()函数的末尾时,它们一开始是高亮显示的,而不是我想要的

当我在任意一个单选按钮的click()事件后添加它时,文本将消失,但实际控件保持高亮显示。规则的required属性上的函数可能没有完全工作。真正有趣的是:当我输入一个高度时,点击,然后重量和设备会突出显示,并在下面显示错误消息。当我点击其中一个单选按钮时,文本消失,但高亮显示不消失。但是高度没有突出显示,它保持正常。

工作小提琴:(缺少突出显示CSS样式,但类被正确添加/删除)

当您选中其中一个复选框时,没有代码告诉验证插件重新检查表单。添加
$('form').valid()在每个单击处理程序的底部强制我重新验证:

    cbDeclined.click(function () {

        if (cbDeclined.is(':checked'))
            cbIsOOfFac.attr('checked', false);

        UpdateTextBoxes();
        $('form').valid();
    });

    cbIsOOfFac.click(function () {

        if (cbIsOOfFac.is(':checked'))
            cbDeclined.attr('checked', false);

        UpdateTextBoxes();
        $('form').valid();            
    });

首先,你有没有想过为什么这个例子不起作用?这本身对我来说毫无意义。我添加了一些您推荐的代码,结果很有趣,但从未完全成功。由于篇幅和格式的原因,我将把这些细节放在原始文章中。我通过切换到jQuery并从表单元素中删除onsubmit处理程序,使JSFIDLE正常工作(基于您的原始版本)。还编辑了我的答案-你是对的,
updatetextboxs
放错地方了。在上面的点击处理程序中进行验证在链接的小提琴中对我有效。