【问题标题】: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?什么活动?

标签: jquery asp.net asp.net-mvc validation jquery-validate


【解决方案1】:

如果元素的值为空,jQuery 验证将不会运行任何规则。如果您有一条 minLength = 2 规则,但输入字段为空,则该规则不会失败。只有当用户输入 1 个字符时才会失败。

同样的想法也适用于远程验证器。如果值为空,则不会发送到服务器。

我认为插件中没有选项可以更改此行为。您将需要创建一个自定义异步规则来获得您期望的行为。这可能会变得有点棘手。你确定没有其他方法可以做到吗?验证服务器中的空字符串是否有意义?可以添加所需的规则吗?

【讨论】:

  • 服务器正在决定是否需要该特定字段。空字段所需的验证器触发器。为什么远程验证器会有所不同?我正在有效地尝试创建一个远程 IsRequired 验证器,基于仅对服务器可用的信息。
  • 远程验证器没有任何不同。它与其他验证器具有相同的行为。如果字段为空,Required 验证器必须触发,因为这是它的行为。如果该字段为空,则所有其他验证器都不会触发。
  • 您是否可能会看到Required 验证器在客户端上执行,而RemoteValidator 将根据定义调用服务器(empty 情况除外)。我只是说他们是不同的。
  • 我也需要这种行为——当调用 valid() 时,无论如何都必须进行远程验证。原因: 1)只有服务器知道在给定时间在给定情况下是否需要该字段。 2)通过它,我可以在一个地方定义所有验证规则,当您处理一个大型复杂系统时,这变得非常重要!所以这一定是插件设置中的一个选项。
  • 找到了解决方法。在此处查看解决方案:jquery validation remote - validate whether data in field or not
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 2013-11-09
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多