字段为空时不触发远程属性
Posted
技术标签:
【中文标题】字段为空时不触发远程属性【英文标题】:Remote attribute doesn't trigger when field is blank 【发布时间】:2013-01-20 09:00:54 【问题描述】:我在表单上的特定字段中使用RemoteAttribute
。它的目的并不重要。重要的是,无论何时更改字段,它都需要触发验证操作。这对我来说很好,除非该字段更改为空白。
我已经用 Google 搜索过,但没有找到任何结果。有人知道RemoteAttribute
是否真的会触发空白字段,如果没有,如何强制?
或者,可以自定义/修改远程验证器以触发空白值吗?
【问题讨论】:
虽然不是对您问题的直接回答,但 MVC 的远程验证器只是调用 jQuery Validation 的“远程”验证器,所以我想说这更像是一个 jQuery 验证问题,而不是一个MVC 问题。 @Eilon。你是绝对正确的。我重新标记了jQuery
。
我不熟悉RemoteValidator,但它一定是被什么东西触发的……改变?如果值为空,是否可以不触发更改事件?或者在任何以空白输入结尾的更改时将虚假值传递给 RemoteValidator?
@user1167442 如果您能提供进一步的建议,那将很有用...
什么触发了 RemoteValidator?什么活动?
【参考方案1】:
如果元素的值为空,jQuery 验证将不会运行任何规则。如果您有一条 minLength = 2 规则,但输入字段为空,则该规则不会失败。只有当用户输入 1 个字符时才会失败。
同样的想法也适用于远程验证器。如果值为空,则不会发送到服务器。
我认为插件中没有选项可以更改此行为。您将需要创建一个自定义异步规则来获得您期望的行为。这可能会变得有点棘手。你确定没有其他方法可以做到吗?验证服务器中的空字符串是否有意义?可以添加所需的规则吗?
【讨论】:
服务器正在决定是否需要该特定字段。空字段所需的验证器触发器。为什么远程验证器会有所不同?我正在有效地尝试创建一个远程 IsRequired 验证器,基于仅对服务器可用的信息。 远程验证器没有任何不同。它与其他验证器具有相同的行为。如果字段为空,Required 验证器必须触发,因为这是它的行为。如果该字段为空,则所有其他验证器都不会触发。 您是否可能会看到Required
验证器在客户端上执行,而RemoteValidator
将根据定义调用服务器(empty
情况除外)。我只是说他们是不同的。
我也需要这种行为——当调用 valid() 时,无论如何都必须进行远程验证。原因: 1)只有服务器知道在给定时间在给定情况下是否需要该字段。 2)通过它,我可以在一个地方定义所有验证规则,当您处理一个大型复杂系统时,这变得非常重要!所以这一定是插件设置中的一个选项。
找到了解决方法。在此处查看解决方案:jquery validation remote - validate whether data in field or not以上是关于字段为空时不触发远程属性的主要内容,如果未能解决你的问题,请参考以下文章
“未使用属性访问结果-getter 不应用于副作用”检查文本字段是不是为空时出错 [关闭]
UISearchController 结果 TableViewController 在 UISearchBar 为空时不清除结果