动态删除ASP MVC中元素的必需属性?

Mik*_*ike 3 javascript asp.net-mvc jquery unobtrusive-validation

在使用不显眼验证的ASP MVC项目中,是否有一种方法可以动态地从元素中删除Required属性?

元素在视图模型中使用Required注释进行修饰.我想我可以通过使用JQuery删除html属性"data-val-required"来删除它,但客户端验证仍然会根据需要处理该元素.是否无法通过操纵不显眼的验证属性来操纵元素的验证?

这是我尝试过的,但它没有用.如果未选中复选框,我想删除所需的属性.

$("#chkTempHire").click(function () {

    var checked = $(this).attr("checked");
    var attr = $("#txtTempHireEndDate").attr("data-val-required");
    var hasAttr = false;

    if (typeof attr !== typeof undefined && attr !== false)
        hasAttr = true;

    if (!checked && hasAttr)
        $("#txtTempHireEndDate").removeAttr("data-val-required");
});
Run Code Online (Sandbox Code Playgroud)

我错过了什么,还是不可能?

谢谢!

小智 17

您可以使用.rules()jQuery内置的方法,您不需要手动删除属性.

去除:

$("#txtTempHireEndDate").rules("remove", "required")
Run Code Online (Sandbox Code Playgroud)

加上:

$("#txtTempHireEndDate").rules("add", "required")
Run Code Online (Sandbox Code Playgroud)