JQuery 验证规则不会动态更改



我正在尝试动态更改字段的规则(和消息(。它似乎有效,但是我定义的第一个规则是即使我重新定义它们也适用的规则。我尝试了方法" resetform(("而没有成功,也试图添加类似问题的一些答案

的答案
$('input[name="textmsg"]').rules('add', rules);

,但它会引发实习生validate.js错误。


我的代码工作如下:

var validationRules = {
    defaultField: { required: true },
    name: { required: true, minlength: 5, maxlength: 50 },
    birthDate: { required: true, date: true },
    phoneNumber: { required: true, maxlength: 20, digits: true }
};

[...]

$("#chatbox-form").submit(function(event)
{
    var valid = validateField(questionsInOrder[currentQuestion]);
    if (valid) {
        currentQuestion++;
    }
    askQuestion();
}

[...]

function validateField (question)
{
    var form = $("#chatbox-form");
    var rules = validationRules[question];
    if (typeof rules === "undefined") {
        rules = validationRules.defaultField;
    }
    var messages = validationMessages[question];
    if (typeof messages === "undefined") {
        messages = validationMessages.defaultField;
    }
    var validator = form.validate({
        rules: {
          textmsg: rules
        },
        messages: {
          textmsg: messages
        },
        errorPlacement: function(error, element) {
            return true;
        },
        showErrors: function(errorMap, errorList) {
            if ((Object.keys(errorList).length) > 0) {
                errorMessage = errorList[0].message;
            }
        }
    });
    var valid = form.valid();
    validator.resetForm();
    return(valid);
}

每次我提交无效的响应时,它会再次提出,当它是有效的回复时,它会问下一个问题。但是验证始终应用第一组规则,它不会刷新它们(字段"规则"one_answers"消息"正在正确更改(。

找到了一个解决方案:

validator.destroy();

这会破坏实例(因为 validate((是插件的初始化(。validator.destroy((。


一种替代方法是使用规则('remove'(规则('add',规则(。在这种情况下

相关内容

  • 没有找到相关文章

最新更新