如果字段为空,则需要Jquery验证下拉列表

如果字段为空,则需要Jquery验证下拉列表,jquery,jquery-validate,Jquery,Jquery Validate,如果#category字段为空,我试图使下拉列表成为必需 谢谢 JQUERY尝试#1: $(“#uploadDocsForm”)。验证({ 规则:{ 姓名:{ 要求:正确, 最小长度:2, 最大长度:255 }, 类别识别码:{ 必需:功能(元素){ 返回$(“#类别”).val()=''; } } }, 信息:{ 名称:“请输入文档名称。”, 类别id:“请选择一个类别。” } }); JQUERY尝试#2: $(“#uploadDocsForm”)。验证({ 规则:{ 姓名:{ 要求:正确

如果#category字段为空,我试图使下拉列表成为必需

谢谢

JQUERY尝试#1:

$(“#uploadDocsForm”)。验证({
规则:{
姓名:{
要求:正确,
最小长度:2,
最大长度:255
},
类别识别码:{
必需:功能(元素){
返回$(“#类别”).val()='';
}
}
},
信息:{
名称:“请输入文档名称。”,
类别id:“请选择一个类别。”
}
});
JQUERY尝试#2:

$(“#uploadDocsForm”)。验证({
规则:{
姓名:{
要求:正确,
最小长度:2,
最大长度:255
},
类别识别码:{
所需:{
依赖:函数(元素){
返回$(“#类别”).val()='';
}
}
}
},
信息:{
名称:“请输入文档名称。”,
类别id:“请选择一个类别。”
}
});
HTML:


文件名
类别
请选择类别
------------------------
试验猫
新类别
$(“#uploadDocsForm”)。验证({
规则:{
姓名:{
要求:正确,
最小长度:2,
最大长度:255
},
类别识别码:{
所需:{
依赖:函数(元素){
返回$(“#类别”).val()='';
}
}
}
},
信息:{
名称:“请输入文档名称。”,
类别id:“请选择一个类别。”
}
});
depends函数现在检查category元素是否已填充,如果已填充,则需要第二个元素。否则它是可选的(含义可以填写)

用例:

  • 类别已填充,类别id为空:无效
  • 类别已填写,类别id已填写:有效
  • 类别为空,类别id为空:有效
  • 类别为空,类别id已填写:有效

我似乎不再支持“依赖”

我使用了以下方法,并且效果良好:

<form name="uploadDocsForm" id="uploadDocsForm">   
    <label for="name">Document Name</label>
    <input name="name" id="name" type="text" class="textbox"/>
    <label for="cat_id">Category</label>
    <select name="cat_id" id="cat_id" class="dropdown">
    <option value="" selected>Please Select Category</option>
    <option>------------------------</option>
    <option value="1">test cat</option>
    </select>
    <label for="category">New Category</label>
    <input name="category" id="category" type="text" class="textbox"/>
    </form>

文件名
类别
请选择类别
------------------------
试验猫
新类别
请注意,选项值=“”,这会导致验证失败,因为val为空

$("#uploadDocsForm").validate({
    rules: {
        name: {
            required: true,
            minlength: 2,
            maxlength: 255  
        },
        cat_id: {
            required: true
            }
        }
    },
    messages: {
        name: 'Please enter a <b>Document Name</b>.',
        cat_id: 'Please select a <b>Category</b>.'
    }
});
$(“#uploadDocsForm”)。验证({
规则:{
姓名:{
要求:正确,
最小长度:2,
最大长度:255
},
类别识别码:{
必填项:true
}
}
},
信息:{
名称:“请输入文档名称。”,
类别id:“请选择一个类别。”
}
});

它似乎工作不正常。我也试过:cat_id:{required:{dependens:function(element){return($(“#category”).val()!=''&$(element.val()!='';}}}}您的建议没有触发现有的错误(如果名称为空),但当我添加“required”时部分它仍然触发了名称错误,但没有为cat_id写入任何消息。它似乎正在“工作”,但错误消息被抑制。@Stephen我已根据
规则
部分中的更正了代码。如果它仍然不起作用,请设置一个JSFIDLE供我们使用,因为这应该可以起作用。换句话说,您的第二次尝试似乎是正确的,如果这不起作用,请安装一个JSFIDLE。我决定做更多的研究,发现了这个问题!我所要做的就是为空选项添加value=“”——谢谢您的帮助!对我也有用。只要默认为空选项,就不再需要依赖值和返回值!干杯,大卫。
<form name="uploadDocsForm" id="uploadDocsForm">   
    <label for="name">Document Name</label>
    <input name="name" id="name" type="text" class="textbox"/>
    <label for="cat_id">Category</label>
    <select name="cat_id" id="cat_id" class="dropdown">
    <option selected>Please Select Category</option>
    <option>------------------------</option>
    <option value="1">test cat</option>
    </select>
    <label for="category">New Category</label>
    <input name="category" id="category" type="text" class="textbox"/>
    </form>
$("#uploadDocsForm").validate({
    rules: {
        name: {
            required: true,
            minlength: 2,
            maxlength: 255  
        },
        cat_id: {
            required: {
                depends: function(element) {
                    return $("#category").val() == '';
                }
            }
        }
    },
    messages: {
        name: 'Please enter a <b>Document Name</b>.',
        cat_id: 'Please select a <b>Category</b>.'
    }
});
<form name="uploadDocsForm" id="uploadDocsForm">   
    <label for="name">Document Name</label>
    <input name="name" id="name" type="text" class="textbox"/>
    <label for="cat_id">Category</label>
    <select name="cat_id" id="cat_id" class="dropdown">
    <option value="" selected>Please Select Category</option>
    <option>------------------------</option>
    <option value="1">test cat</option>
    </select>
    <label for="category">New Category</label>
    <input name="category" id="category" type="text" class="textbox"/>
    </form>
$("#uploadDocsForm").validate({
    rules: {
        name: {
            required: true,
            minlength: 2,
            maxlength: 255  
        },
        cat_id: {
            required: true
            }
        }
    },
    messages: {
        name: 'Please enter a <b>Document Name</b>.',
        cat_id: 'Please select a <b>Category</b>.'
    }
});