Ваша главная проблема, вероятно, в селекторе, :checked
должен находиться рядом с селектором attirubte ([]
), поэтому input[name^=rdDir:checked]
должно быть input[name^=rdDir]:checked
.
Из вашей разметки выглядит (для меня!), Что вы хотите, чтобы она потребовалась, если выбрана какая-либо из <input type="radio" class="chooseDir" />
, поэтому в любом случае нужно изменить ее на .chooseDir:checked
.
Кроме того, пары правил должны быть nameOfElement: { rules}
, поэтому вместо chooseDir
вы хотите, чтобы rdDir
действительно требовалось.
В качестве подсказки, вы также можете сделать это без пользовательского метода (если вы не используете его в нескольких местах, в этом случае я бы придерживался пользовательского метода), поскольку required:
может использовать селектор вместо просто true
/ false
. Если селектор что-то находит, это требуется, если нет, то это не требуется.
Вот все вышеперечисленное вместе, чтобы вы могли видеть, что вся картинка выглядит так:
$("#contExpInitiateForm").validate({
debug:true
,rules:{
RenewalNo: {required: true, number: true},
rdDir: {required: ".chooseDir:checked"},
workflowChoice: {required: true} }
,messages:{
rdDir: "That particular workflow requires a Director to be chosen. Please select Director" }
,errorPlacement: function(error, element) {
$('.errorMessageBox').text(error.html()); }
});
В приведенном выше коде необходим список радиокнопок rdDir
, если выбрана любая из радиокнопок class="chooseDir"
, и будет отображаться сообщение, если оно требуется и не заполнено.