Я пытаюсь написать валидации javascript как общий. Я добавил атрибут для всех элементов управления, которые предназначены для страницы. Когда когда-либо нажимается любой щелчок (действие Post), у меня есть скрипт на стороне клиента, который будет запускаться, и он будет проверять, есть ли какой-либо обязательный элемент управления, который не заполнен данными. Если это так, тогда будет создано предупреждающее сообщение типа "Пожалуйста, введите значение".
Итак, вот настоящая проблема. всякий раз, когда я пытаюсь использовать Asp:checkbox
и asp:radio
он всегда визуализируется с контролем диапазона без атрибута ID. Поэтому я не могу установить флажок или переключатель с помощью управления диапазоном с помощью JQuery.
Вот код на стороне сервера, который будет присваивать isMandated=true
на основе проверки бизнеса.
control.Attributes.Add("isMandatory", "true")
Здесь управление webcontrol
здесь представлен вывод Asp:checkbox
и asp:radio
<span isMandatory="true"><input id="mainHolder_rdb1" type="radio" name="ctl00$mainHolder$rdb1" value="rdb1" /></span>
<span isMandatory="true"><input id="mainHolder_chkBox" type="checkbox" name="ctl00$mainHolder$chkBox" /></span>
Здесь я не могу подобрать элемент управления с помощью управления диапазоном без атрибута ID. Есть ли способ обхода решения. (Но у меня есть идея использовать клиентский контроль, добавив тег runat = "server").
Вот мой фактический код javascript,
function validateMandatedFields() {
var isValid = true;
var tagName = "";
$("[ismandatory='true']").each(function (ctrl) {
thisControl = $(this);
tagName = thisControl.prop('tagName').toLowerCase();
if (tagName === "select" && thisControl.val() === "-1") {
alert("please enter the value");
thisControl.focus();
isValid = false;
return isValid;
}
else if ((tagName === "table") && $("#" + thisControl.attr("id") + " input[type='radio']").length > 0) {
var isChecked = $("#" + thisControl.attr("id") + " input[type='radio']").is(":checked");
if (!isChecked) {
alert("please select any option");
$("#" + thisControl.attr("id") + " input[type='radio']").focus();
isValid = false;
return isValid;
}
}
else if ((tagName === "table") && $("#" + thisControl.attr("id") + " input[type='checkbox']").length > 0) {
var isChecked = $("#" + thisControl.attr("id") + " input[type='checkbox']").is(":checked");
if (!isChecked) {
alert("please select any option");
$("#" + thisControl.attr("id") + " input[type='checkbox']").focus();
isValid = false;
return isValid;
}
} else if (tagName === "span" && $("span input[type='checkbox']").length>0) {
var isChecked = $("span input[type='checkbox']").is(":checked");
if (!isChecked) {
alert("please select any option");
$("span input[type='checkbox']").focus();
isValid = false;
return isValid;
}
}
else if (tagName === "span" && $("span input[type='radio']").length > 0) {
var isChecked = $("span input[type='radio']").is(":checked");
if (!isChecked) {
alert("please select any option");
$("span input[type='radio']").focus();
isValid = false;
return isValid;
}
}
else if (thisControl.val() === "") {
alert("please enter the value");
thisControl.focus();
isValid = false;
return isValid;
}
});
return isValid;
}
Наконец, я пришел к идее, чтобы включить еще один атрибут типа "ControlToValidate" и его значение как "Control.ClientID".
И этот будет добавлен к элементам управления, таким как asp: CheckBox и asp: radioButton.
Вы посмотрели плагин Jquery Validate? http://jqueryvalidation.org/