Проверка JQuery - текстовое поле требует данных, если флажок установлен
У меня есть флажок - HasRaffle
для этого потребуется текстовое поле - RaffleItem
содержать данные, если HasRaffle
проверено. Как бы я это сделал? Я никогда не делал свои собственные проверки JQuery раньше. Это то, что я пытался, но это не работает вообще. Я даже близко?
$("#donationEventForm").validate({
rules: {
RaffleItem: {
required: function () {
if ($("#HasRaffle").is(":checked")) {
if ($("#RaffleItem").val === '') {
return true;
} else {
return false;
}
} else {
return false;
}
},
messages: {
required: "This is a test!!"
}
}
}
});
РЕДАКТИРОВАТЬ: Вот мой взгляд
@using (Html.BeginForm("Create", "DonationEvent", FormMethod.Post, new {id = "donationEventForm"})) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(false)
<div class="form-field">
@Html.LabelFor(model => model.Charity)
@Html.TextBoxFor(model => model.Charity)
@Html.ValidationMessageFor(model => model.Charity)
</div>
<div class="form-field">
@Html.LabelFor(model => model.StartDate)
@Html.TextBoxFor(model => model.StartDate, new {@class = "datepicker"})
@Html.ValidationMessageFor(model => model.StartDate)
</div>
<div class="form-field">
@Html.LabelFor(model => model.EndDate)
@Html.TextBoxFor(m => m.EndDate, new {@class = "datepicker"})
@Html.ValidationMessageFor(model => model.EndDate)
</div>
<div class="form-field">
@Html.Label("Raffle?")
@Html.CheckBox("HasRaffle", true)
</div>
<div class="form-field">
@Html.LabelFor(model => model.RaffleItem)
@Html.TextBoxFor(model => model.RaffleItem)
@Html.ValidationMessageFor(model => model.RaffleItem)
</div>
@Html.TextBoxFor(model => model.GLCode, new {@type = "hidden"})
@Html.TextBoxFor(model => model.TransactionDescription, new {@type = "hidden"})
@Html.TextBoxFor(model => model.CreatedBy, new {@type = "hidden"})
<div class="form-field-buttons">
<input type="submit" value="Create" />
<input type="button" value="Cancel" onclick="location.href='../Home/Index'"/>
</div>
}
1 ответ
Вам нужно добавить пользовательское правило с помощью addMethod
jQuery.validator.addMethod('checkRaffle', function(value, element){
if ($("#HasRaffle").is(":checked")) {
if (value === '') {
return false;
} else {
return true;
}
} else {
return true;
}
}, 'Please write something')
Тогда правило будет выглядеть примерно так:
rules: {
'RaffleItem': {
'checkRaffle' : true
}
}
Этот код не проверен (и, вероятно, не будет работать, потому что я не вижу вашу DOM), НО, если вы видите логику моего кода, вы, вероятно, можете отладить свою!