Я знаю, что отключенные входы не отправляют значение на сервер. Кроме того, флажок не может иметь свойство readonly. Я хотел бы получить функциональность «checkonly checkbox», где флажок отключен, и я могу прочитать значение этого флажка на странице.Значение по умолчанию отключено.
Следующий код - это что-то похожее на то, что мне нужно сделать в моем приложении. При щелчке первого флажка (RememberMe), я проверяю второй флажок (Серьезно) и добавляю к нему атрибут disable.
Вот модель:
public class LogOnModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
[Display(Name = "Seriously?")]
public bool Seriously { get; set; }
}
Вот мое мнение:
@using (Html.BeginForm("", "", FormMethod.Post, new { id = "userForm" }))
{
<div>
<fieldset>
<legend>Account Information</legend>
<div class="editor-label">
@Html.LabelFor(m => m.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<div class="editor-label">
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)
</div>
<div class="editor-label">
@Html.CheckBoxFor(m => m.Seriously)
@Html.LabelFor(m => m.Seriously)
</div>
<p>
<input type="button" value="Log On" onclick = "SubmitForm();"/>
</p>
</fieldset>
</div>
}
Вот раздели вниз содержимое моего файла JS включен в представлении:
function SubmitForm() {
$.ajax({
type: "POST",
url: "/Account/LogOnAjax",
cache: false,
data: $("#userForm").serialize(),
success: function (results) {
showMessage(results);
},
error:
showMessage("error!");
}
});
}
function SeriouslyCheckEnable(value) {
var SeriouslyCheckBox = $("input[name = 'Seriously']");
if (value == "true") {
SeriouslyCheckBox.attr('checked', 'checked');
SeriouslyCheckBox.attr("disabled", "true");
}
else {
SeriouslyCheckBox.removeAttr('checked');
SeriouslyCheckBox.removeAttr('disabled');
}
}
$(document).ready(function() {
$("input[name='RememberMe']").click(function (e) { SeriouslyCheckEnable(($("input[name='RememberMe']:checked").val())); });
});
Вот контроллер, который я отлаживаю:
public ActionResult LogOnAjax(LogOnModel model)
{
bool seriously = model.Seriously;
bool remMe = model.RememberMe;
return Json("some message here", JsonRequestBehavior.AllowGet);
}
Теперь, независимо от установленного состояния серьезного флажка, я всегда получаю ложное значение для булевой переменной. Любая помощь будет оценена по достоинству.
мне нужен второй флажок для отключения только при первом флажке i s проверено. Я хочу, чтобы пользователи установили/сняли флажок, если первый флажок не установлен, и выведите соответствующее значение. В приведенном выше примере серьезный флажок всегда отключен. – TK1
Кроме того, у меня появляется сообщение об ошибке javascript: «Объект не поддерживает свойство или метод« prop » – TK1
Хорошо, я скорректировал его на основе требований, это было не на 100% ясным до этого, lemme знает, если это работает для вас. – JPK