- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下场景:多个必需的 DataAnnotation 属性。我制作了一个自定义标签助手,它在需要装饰的属性旁边呈现一个“*”。现在,在客户端,如果依赖属性更改值,我希望能够隐藏/显示。
为了更精确的例子,我有一个模型
public class Document {
public bool IsFake {get; set; }
[RequiredIf("IsFake",false,ValueComparison.IsEqual)]
public string Number{ get; set; }
}
根据我制作的标签助手,我在 UI 中拥有带有红色 * 的 Number 相应标签。当我在客户端从 is fake 更改为 is not fake 单选按钮时,我想隐藏 *。
我希望能够自动进行此更改,而不是为已知字段创建一个脚本来执行此操作,因为我有多个这样的情况。
我在想也许我可以编写一段 JavaScript 代码,将更改事件动态附加到依赖属性输入和一个显示/隐藏所需标记的处理程序。
最佳答案
这几乎是我想出的解决方案。这是我能做的最好的事情,但仍然需要一些定制,这意味着包含“*”的跨度是为我的页面 DOM 定制的。
<div class="editor-label">
<label ui-documentLabel" for="Number">Number<span class="span-required">*</span></label>
</div>
<div class="editor-field">
<input class="k-textbox ui-textbox" data-val="true" data-val-requiredif="The field Number is required!" data-val-requiredif-dependentproperty="IsFake" data-val-requiredif-dependentvalue="False" data-val-requiredif-operator="IsEqual" id="Number" name="Number" value="" type="text">
<span class="field-validation-valid" data-valmsg-for="Number" data-valmsg-replace="true"></span>
</div>
和 JavaScript
var clietsidevalidation = function () { };
clietsidevalidation.is = function (value1, operator, value2) {
//function that verifies that the comparison between value1 and value2 is true or not
};
clietsidevalidation.handleRequirefIf = function (container) {
$('input', container).filter(function () {
var attr = $(this).attr('data-val-requiredif');
return (typeof attr !== 'undefined' && attr !== false);
}).each(function (index, item) {
var params = new Array();
params["operator"] = $(this).attr('data-val-requiredif-operator');
params["dependentvalue"] = $(this).attr('data-val-requiredif-dependentvalue');
params["dependentproperty"] = $(this).attr('data-val-requiredif-dependentproperty');
var dependentProperty = clietsidevalidation.getName(this, params["dependentproperty"]);
var dependentTestValue = params["dependentvalue"];
var operator = params["operator"];
var dependentPropertyElement = document.getElementsByName(dependentProperty);
params["element"] = this;
$(dependentPropertyElement).on('change', { params: params }, function (e) {
var input = e.data.params.element;
var inputName = $(input).attr("name");
var $span = $('label[for=' + inputName + '] span', '.editor-label');
var dependentProperty = this;
var dependentTestValue = e.data.params["dependentvalue"];
var operator = e.data.params["operator"];
var dependentPropertyElement = $(this);
var dependentValue = null;
if (dependentPropertyElement.length > 1) {
for (var index = 0; index != dependentPropertyElement.length; index++)
if (dependentPropertyElement[index]["checked"]) {
dependentValue = dependentPropertyElement[index].value;
break;
}
if (dependentValue == null)
dependentValue = false
}
else
dependentValue = dependentPropertyElement[0].value;
if (clietsidevalidation.is(dependentValue, operator, dependentTestValue) == false) {
$span.addClass('hidden');
var $form = $span.closest("form");
// get validator object
var $validator = $form.validate();
var $errors = $form.find("span.field-validation-error[data-valmsg-for='" + inputName + "']");
// trick unobtrusive to think the elements were succesfully validated
// this removes the validation messages
//custom form our solution as the validation messages are differently configured DOM
$errors.each(function () { $validator.settings.success($('label',this)); })
// clear errors from validation
$validator.resetForm();
}
else {
$span.removeClass('hidden')
}
});
});
};
这是受到另一篇文章的启发,我现在找不到,但当我找到时,我会发布一个链接。
关于asp.net-mvc - 当依赖属性更改值时,删除/添加 requiredif 的星号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21164874/
我正在使用 JaroslawWaliszko 的 ExpressiveAnnotations .当我通过 ModelState.IsValid 检查服务器端时,它工作正常。但它没有显示客户端验证消息。
如果启用了功能(如果您选择了复选框),我试图让一个字段成为必填字段。但是该验证不会通过单击选择/取消选择复选框来触发 Enable Vue.js validations: {
我有一个带有两个单选按钮的 asp.net MVC 4 View 。在页面加载时, View 的一部分使用 css 隐藏。在 View 本身上,当用户选择一个单选按钮时,一旦隐藏部分并显示其他部分,当
我们正在尝试使用 Foolproof 验证注释 [RequiredIf] 来检查是否需要电子邮件地址。我们还创建了一个枚举以避免在 ViewModel 中使用查找表 ID。代码如下所示: public
我正在开发一个 Laravel 5.8 项目,并尝试显示使用 requiredIf 验证规则的验证的自定义验证消息。 这是我的设置方法: $validation = Validator::make(
我正在寻找一些有关实现执行以下操作的验证属性的最佳方法的建议。 型号 public class MyInputModel { [Required] public int Id {get
我希望我的validation.xml 仅在从下拉列表中选择某些选项时检查是否为空。到目前为止我已经 field[0]
我正在尝试有条件地验证 MVC.NET Core 中的字段。我有两个单选按钮。如果我选择是(对于所有权),我想在下方创建一个必填字段(事件下拉列表) 但是,无论我多么努力,要验证的值始终来自 Acti
我的应用程序有一个要求,在某些条件下需要一个字段,然后该字段应该与特定模式匹配。有没有办法可以将所需的 if 和 mask 条件结合起来?我使用的是struts 1。 这是validation.xml
我有以下场景:多个必需的 DataAnnotation 属性。我制作了一个自定义标签助手,它在需要装饰的属性旁边呈现一个“*”。现在,在客户端,如果依赖属性更改值,我希望能够隐藏/显示。 为了更精确的
我正在使用custom RequiredIf attribute created by Simon Ince在我的 MVC 应用程序中。 我有一个 View 模型,它像这样传递给 View : pub
如何在 .NET Core 中实现 RequiredIf 条件操作以进行基于模型的验证。 在 ASP.NET MVC 中,曾与 ExpressiveAnnotation 包一起使用,但它不适用于 .N
如何在 .NET Core 中实现 RequiredIf 条件操作以进行基于模型的验证。 在 ASP.NET MVC 中,曾与 ExpressiveAnnotation 包一起使用,但它不适用于 .N
我是一名优秀的程序员,十分优秀!