Validation 仅当选择了选项时,语义ui表单规则

Validation 仅当选择了选项时,语义ui表单规则,validation,semantic-ui,Validation,Semantic Ui,我正在使用语义用户界面,并试图用它做一些表单验证 我的情况是,用户有两种选择:电子邮件或手机应用程序验证。他们选择其中一个选项并在文本字段中输入任何内容,然后单击提交 但是,我不知道如何使用语义用户界面来处理这些规则 我知道如果我想检查它是否为空白,我可以这样做: $('.ui.form') .form({ fields: { CODE: { identifier: 'code', rules: [ {

我正在使用语义用户界面,并试图用它做一些表单验证

我的情况是,用户有两种选择:电子邮件或手机应用程序验证。他们选择其中一个选项并在文本字段中输入任何内容,然后单击提交

但是,我不知道如何使用语义用户界面来处理这些规则

我知道如果我想检查它是否为空白,我可以这样做:

$('.ui.form')
  .form({
    fields: {
      CODE: {
        identifier: 'code',
        rules: [
          {
            type   : 'empty',
            prompt : 'Please enter your verification code'
          }
        ]
      }  
    } } );
但是,我希望根据选择的选项制定其他规则。我有javascript,它当前告诉我所选内容的值,并在更改时更新。但不确定如何将其添加到规则中,这样我就可以像这样——如果选择了phone,则长度必须正好为6个字符,或者如果选择了email,则长度必须为18个字符(不同选项的长度不同)

有没有这样的条件规则?我能找到的壁橱是:

depends: 'id'
检查以确保它不是空的

是否有人知道如何基于另一个表单元素创建这样的条件规则?我使用的是最新版本的语义用户界面

,您可以通过

$.fn.form.settings.rules.atlestone=函数(值,字段){
fieldsToCompare=字段。拆分(“,”)
如果(值){
//当前输入不是空的
返回真值
}否则{
//检查其他输入字段
//至少有一个不是空的
至少一个=假
对于(i=0;i
请注意,该函数使用输入id作为标识符,而不是输入名称。你可能还想看看

$.fn.form.settings.rules.atLeastOne = function (value, fields) {
    fieldsToCompare = fields.split(",")
    if (value) {
        // current input is not empty
        return true
    } else {
        // check the other input field(s)
        // atLeastOne is not empty
        atLeastOne = false
        for (i = 0; i < fieldsToCompare.length; i++) {
            // gets input based on id
            if ($("#" + fieldsToCompare[i]).val()) {
                atLeastOne = true
            }
        }
        return atLeastOne
    }
}

$(".ui.form").form({
    fields: {
        number:{
            identifier: "number",
            rules: [{
                type: "exactLength[6]",
                prompt: "number has to be 6 chars long"
            }, {
                // include the input fields to check atLeastOne[email, address, ...]
                type: "atLeastOne[email]",
                prompt: "Please provide an email or a number"
            }]
        },
        email: {
            identifier: "email",
            rules: [{
                type: "exactLength[18]",
                prompt: "email has to be 18 chars long"
            }, {
                type: "atLeastOne[number]",
                prompt: "Please provide an email or a number"
            }]
        }
    }
});