在另一个字段发生变化时触发 Yii 字段验证

2023-11-26

我的 Yii 模型中有两个相关字段。它们是 items_per 和 items_period。

每个项目是一个整数,反映在给定时间段内要处理的项目数。

items_period是该时间段内的秒数(带有标记为秒、分钟、小时的选项的下拉列表)。将 items_per 乘以 items_period 就得到“每秒项目数”。

我设置了一个自定义验证规则来限制每秒的项目超过一定数量。当您更改 items_per 字段中的值(模糊时)时,一切正常,并使用 ajax 验证给出合理的错误消息。

我需要在 items_period 字段发生更改时触发 items_per 字段的验证(可能不允许 100 个/秒,但允许 100 个/分钟)。

我尝试向 items_per 下拉列表添加 onchange 函数以触发 items_per 字段上的“模糊”或“更改”,但它似乎没有发出 ajax 请求进行验证。提交表单只是为了触发验证不是一种选择,因为它可能没有任何错误,并且只是在用户准备好之前保存记录。

有什么建议我可以强制一个字段在另一个字段中触发 ajax 验证吗?


可以通过AJAX实现客户端验证(用JS)and如果您定义了一个扩展的自定义验证器,则对于所有普通请求都放在一个包中CValidator.

对于“普通”验证,请使用正确的属性名称和参数设置验证器并覆盖validateAttribute method.

对于客户端验证,另外覆盖clientValidateAttribute方法。如果为表单启用了客户端验证,这将导致自动调用您的自定义 JS 来验证输入。从覆盖中你将输出 JS 代码在这个上下文中运行:

function(value, messages, attribute) {
    // your code goes here
    // value: current value of attribute
    // messages: array of strings (validation errors) you should append to
    // attribute: name of the attribute
}

您可以看到内置验证器如何在此框架中工作一个例子。另请参阅CActiveForm.clientOptions.

对于 AJAX 验证,您can提交表格进行验证。这个想法是您将验证配置为包含特殊参数(例如ajax=something)或排除其中一个(例如,不包含提交按钮的值)。事实上,Yii 已经通过自动包含一个来做到这一点ajax=formId所有 AJAX 验证请求中的参数!

通过这种方式,您可以轻松编写始终验证但仅在应该时保存的控制器代码。 Yii 参考中也有一个例子CActiveForm(搜索“为了响应 AJAX 验证请求,我们需要以下类代码:”)。

最后,您可以通过调用 Javascript 以编程方式设置任何属性的验证状态$.fn.yiiactiveform.updateInput。如果你这样做,最好通过调用来继续模仿 Yii$.fn.yiiactiveform.updateSummary以及。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在另一个字段发生变化时触发 Yii 字段验证 的相关文章

随机推荐

  • 如何解析通过/proc文件传递给内核模块的大量数据?

    Edit 我已经发现seq file这简化了将大量数据从内核写入用户空间的过程 我正在寻找的是相反的 一种有助于从用户空间读取大量数据 多于一页 的 API Edit 2 我正在实施一个端口
  • 嵌入网站的一部分

    假设我想将我最喜欢的网络漫画之一的最新连环漫画嵌入到我的网站中作为对其的一种推广 网络漫画的 div 内有带有 id 的条带 所以我想我可以将 div 嵌入到我的网站中 但我找不到任何代码示例来说明如何做到这一点 它们都展示了如何嵌入 fl
  • 我可以在 matplotlib 中循环使用线条样式吗

    我知道如何在 matplotlib 中循环显示颜色列表 但是是否可以对线条样式 纯线 点线 虚线等 做类似的事情 我需要这样做 以便我的图表在打印时更容易阅读 有什么建议如何做到这一点 像这样的事情可能会起作用 import matplot
  • 如何实现 C#4 的 IDynamicObject 接口?

    要在 C 4 0 中实现 方法缺失 语义等 您必须实现 IDynamicObject public interface IDynamicObject MetaObject GetMetaObject Expression parameter
  • 预先确定大叶的最佳放大级别

    我正在使用 folium 绘制一些地图 工作相当顺利 但是 我不知道如何预先计算正确的缩放级别 我可以自动设置 import folium m folium Map point of interest iloc 0 Lat point of
  • 如何在 Javascript 中创建最佳拟合多项式曲线?

    我正在尝试使用 3 6 阶多项式计算数据的最佳拟合曲线 我找到了这个教程 JavaScript 中的三次回归 最佳拟合线 首先 我似乎无法让我的输出远程匹配曲线 jsbin在这里 http jsbin com qukuqigobu 1 ed
  • 如何将 rtf 字符串提供给 richtextbox 控件

    我有一串富文本字符 标记 我想将其提供给代码中的富文本框 string rt rtf1 ansi ansicpg1252 deff0 deflang1033 fonttbl f0 fswiss fcharset0 Arial f1 fnil
  • 将同一数据框中的两列合并为一列

    我有一个问题将同一数据帧 start end 中的两列合并为一列 并删除空值 我打算合并 Start station and End station into station 并保留 duration 根据新专栏 station 我努力了p
  • 强制 Idea 生成 R.Java 文件的最简单方法是什么?

    我正在尝试使用 intellij idea 运行 Android 示例应用程序 但记事本示例源目录中缺少 R Java 文件 确保您有正确的设置 项目结构 gt Facets gt Android gt yourproject gt 编译器
  • 类内的类型提示[重复]

    这个问题在这里已经有答案了 class Node def append child self node Node if node None self first child node self child nodes node 我该怎么做n
  • EcmaScript 6 - Tern IDE 解决 Eclipse 验证错误

    我正在使用 Eclipse Mars 以及版本 1 1 0 快照 上支持 ES6 的 Tern IDE 我在箭头函数和 const exports 上收到验证错误 如以下屏幕截图所示 我完成了这些描述 但错误不会消失 https githu
  • 使用JQuery如何显示和隐藏不同div的onClick事件

    我想显示一个基于链接的 Onclick 事件的 div 首次单击 显示 div1第二次单击 隐藏剩余的 div 并显示 div2第三次单击 隐藏剩余的 div 并显示 div3第四次单击 隐藏剩余的 div 并显示 div1 gt 重复循环
  • TypeScript:获取超类的类型?

    我想知道是否有办法在打字稿中获取扩展类的类型 class BaseClass baseProp string class SubClass extends BaseClass subProp string type someType
  • 如何添加系统“Windows 挂钩”以便在创建/激活窗口时收到通知?

    尝试了很多方法 但在我的任务栏被破坏以及桌面用户界面上出现其他超自然效果的情况下 我无法让它始终如一地工作 尝试使用开放库http mwinapi sourceforge net 第一的 尽管它作为面向对象层来枚举窗口和其他东西效果很好 它
  • 将 Javascript 添加到 WKWebView

    你好 我知道这似乎是一个超级简单的问题 但我想将此 JS 添加到我的 WebView 中 现在显然我知道这是 HTML 但我不确定要在 evaluateJavaScript 中放入什么才能使用 JS 源 抱歉 如果这不是很清楚 我对 Swi
  • 从 C 函数构建 PyObject*?

    我正在将 Python 嵌入到我正在制作的 C 库中 我希望用户能够以函数指针的形式传递 C 函数PyObject fpFunc PyObject PyObject 这样我就可以在嵌入式Python中使用这些函数 所以我有一个函数指针 并且
  • 如何使用 python 和 Matplotlib 更新绘图

    我一直在努力尝试使用 matplotlib 和 python 和 wxpython 来更新图表 我想按下一个按钮并将数据添加到嵌套在 wx notebook 中的图表中 下面是代码 谢谢您的帮助 import wx import matpl
  • 在 Java 中取消转义 JavaScript 转义值

    在我们的 Web 服务中 我们通过 JavaScript 设置了一个 cookie 我们在 Java Servlet 中再次读取该 cookie 然而 我们需要转义 cookie 的值 因为它可能包含非法字符 例如 这会弄乱 cookie
  • 我什么时候应该在 data.table 中使用 := 运算符?

    data table对象现在有一个 运算符 该运算符与所有其他赋值运算符有何不同 另外 它有什么用途 速度有多快 什么时候应该避免使用 这是一个示例 显示 10 分钟缩短为 1 秒 摘自 NEWShomepage 这就像子分配给data f
  • 在另一个字段发生变化时触发 Yii 字段验证

    我的 Yii 模型中有两个相关字段 它们是 items per 和 items period 每个项目是一个整数 反映在给定时间段内要处理的项目数 items period是该时间段内的秒数 带有标记为秒 分钟 小时的选项的下拉列表 将 i