输入类型=复位和敲除

2023-12-23

单击表单重置按钮时,Knockout 不会更新可观察值。

http://jsfiddle.net/nQXeM/ http://jsfiddle.net/nQXeM/

HTML:

<form>
    <input type="text" data-bind="value: test" />
    <input type="reset" value="reset" />
</form>
<p data-bind="text: test"></p>

JS:

function ViewModel() {
    this.test = ko.observable("");
}

ko.applyBindings(new ViewModel());

显然,输入框的更改事件没有被触发,如以下 jQuery 测试所示:http://jsfiddle.net/LK8sM/4/ http://jsfiddle.net/LK8sM/4/

如果重置按钮没有触发更改事件,我们将如何强制所有绑定到表单输入的可观察对象进行更新,而无需手动指定它们?

使用 jQuery 查找表单内的所有输入并触发更改事件是很容易的,但假设我们有一个仅限淘汰赛的受控表单。


我复制并修改了默认淘汰赛提交绑定 https://github.com/knockout/knockout/blob/master/src/binding/defaultBindings/submit.js为了为表单重置事件创建类似的绑定:

ko.bindingHandlers['reset'] = {
    init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
        if (typeof valueAccessor() !== 'function')
            throw new Error('The value for a reset binding must be a function');

        ko.utils.registerEventHandler(element, 'reset', function (event) {
            var handlerReturnValue;
            var value = valueAccessor();

            try {
                handlerReturnValue = value.call(bindingContext['$data'], element);
            } finally {
                if (handlerReturnValue !== true) {
                    if (event.preventDefault)
                        event.preventDefault();
                    else
                        event.returnValue = false;
                }
            }
        });
    }
};

你可以这样绑定:

<form data-bind="reset: onFormReset">

and onFormReset将在您的视图模型上:

function ViewModel() {
    this.onFormReset = function () {
        //Your custom logic to notify or reset your specific fields.

        return true;
    }
}

在重置处理程序中,如果返回 true,则 JavaScript 将继续在表单上调用其重置函数。但是,如果您要设置绑定到值的可观察量,则实际上并不需要让 JavaScript 继续重置表单。因此,从技术上讲,您可以不返回任何内容,或者在这种情况下返回 false。

其他人可以进一步扩展它以自动通知表单中所有绑定的可观察量,但这符合我的目的。

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

输入类型=复位和敲除 的相关文章

  • 使用 getElementById 在 javascript 中使用正则表达式进行 Html 表单验证?

    我想使用正则表达式验证 html 表单的示例模式 AAA 111 2222 aa 1234 目前 我的代码要么为所有输入返回 正确 要么为所有输入返回 不正确 并且我无法弄清楚我的问题出在哪里 var x document getEleme
  • 如何使用 Javascript 将 HTML 表单数据输出到 XML 文件?

    我目前正在尝试弄清楚如何将 HTML 表单数据输出到 XML 文件 这是我过去几天一直在研究的一个想法 目的是创建一个用于 Windows 7 安装的 autounattended xml 文件 目前我的 HTML 如下
  • 淘汰赛应用程序的性能调整 - 改进响应时间的指南

    我有一个大型 复杂的页面 严重依赖于 Knockout js 性能开始成为一个问题 但检查调用堆栈并试图找到瓶颈是一个真正的挑战 我在另一个问题中注意到 Knockout js 理解 foreach 和 with https stackov
  • 如何使用 jQuery 创建动态表单?

    我已经看到很多有关动态添加行或字段的帮助 但我对控制相互依赖的字段感兴趣 例如 我有一个包含 3 个用户输入的表单
  • 将某些 observableArray 对象属性转换为 observable

    假设我有这个相同类型对象的数组 var people status 0 name name1 status 1 name name2 我不仅希望它是 observableArray 而且我只想观察每个对象的状态属性 想象一下对象本身可能会被
  • 无法在 onclick 函数中传递多个参数

    我正在尝试创建一个上传机制 其中我可以使用 HTML 中的文件 ID 将文件上传到 google 驱动器中 我不想将文件夹的 ID 放在上传函数中 因为这是需要的 我试图通过声明另一个参数 即函数 upload e id 来传递函数 upl
  • 以表格形式连续调用/评估?

    大家好 简单的问题 使用 XLISP 编写程序 但我似乎遇到了一个我似乎无法解决的简单基本问题 也许有人有一个快速解决方案 我正在尝试编写一个 if 语句 该语句的 then 子句评估多种形式并返回最后一种形式的值 在示例中 setq PO
  • JSON 数据的动态表单(不同类型)

    我尝试使用 JSON 中的数据在 AngularJS 中创建动态表单 我有这个工作 HTML p p
  • 首选的客户端路由解决方案? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从提交的表单中获取值

    我有一个非常简单的表格
  • SwiftUI 表单中的动态行高

    我正在向 SwiftUI 表单添加控件以帮助用户输入数据 并限制条目 尽管 Forms 有很多值得喜欢的地方 但我发现在该容器之外运行良好的东西在容器内却会发生非常意想不到的事情 并且如何弥补这一点并不总是显而易见的 计划是将数据字段显示为
  • 根据另一个输入的值更改输入值

    我想要一个包含几个输入的表单 例如 名称和网址 当用户输入他们的名字时 我希望 url 输入自动将他们的名字作为默认值 并在单词之间使用下划线 因此 如果他们输入自己的名字 pedro kinkybottom 则会自动将 url 输入中的默
  • 单击按钮时,如何将数字存储在 html 表单输入中作为 javascript 变量? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 基本上我想做的是 当用户在 HTML 表单输入字段中输入一个数字 然后按下提交按钮时 该数字将存储在 JavaScript 变量中
  • PHP - 存储和计算无线电输入的总分

    我设计了一个基于网络的小型系统 其中有一个学校评估表 可以向可以访问该系统的特定用户询问一些问题 并且输入将是单选类型 1或2或3或4 该代码正在运行 可以将输入插入数据库 但我不知道计算总分并将其存储在数据库中的正确查询 这是当前正在运行
  • 颤振动态形式无法正常工作

    在我的应用程序中 我想创建一组动态表单 用户可以在其中添加更多项目 在这种动态形式中 它由两个文本字段 1 电话字段 2 电子邮件字段和一个下拉字段组成 但我尝试的任何事情都无法正常工作 我已经要求修复我的代码 但没有得到答复 堆栈溢出问题
  • 如何在Yii框架中向Form添加类?

    我在 Yii 中有一个表单 我想向该表单添加一个类
  • Angular7:NullInjectorError:没有 FormGroup 的提供者

    我真的很沮丧 因为我不知道发生了什么 今天早上一切正常 就在我进行一些更改以将 ReactiveForm 中的 2 个表单合并在一起之前 现在我在浏览器中收到以下错误 错误 StaticInjectorError AppModule For
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from

随机推荐

  • 如何在Python中解析data-uri?

    HTML 图像元素有this http www w3schools com tags tag img asp简化格式 img src something 那东西可以是data uri https www rfc editor org rfc
  • 修改Android的seekbar小部件以垂直操作

    我正在尝试让模拟器使用垂直搜索栏 但我 有点卡住了 我可以让搜索栏按照我想要的方式显示 我可以获得做我想做的事情的进度 并且我可以修改 onTouchEvent 让拇指垂直移动而不是 水平地 我不能做的就是让拇指移到外面 默认 29 水平像
  • 确定时间是否在两个时间之间,无论日期如何

    我创建了一个自定义TimePicker我对 Android Wear 表盘的偏好 用户选择一个时间 它会返回当前时间 以毫秒为单位 代码可以在我的GitHub 仓库 https github com Nxt3 IO Classic Watc
  • 自定义 Jersey 错误处理,如何在客户端捕获响应?

    我正在我的网络服务上尝试一些自定义错误处理 在我的 web 服务中 我创建了一个扩展 WebApplicationException 的自定义异常类 如中所述JAX RS Jersey如何自定义错误处理 https stackoverflo
  • 更新 Python3 pip AttributeError 时出错:模块“lib”没有属性“OpenSSL_add_all_algorithms”

    我在 python3 中安装 更新任何 pip 模块时遇到错误 清除并重新安装pip我能想到的每一个包裹都没有帮助 这是我响应运行时收到的错误python m pip install upgrade pip具体来说 但尝试安装或更新任何 p
  • .NET 的顶级缓存库

    您认为哪些缓存库对 NET 最重要或最有用 我这么问是因为我需要联系他们以了解他们计划支持 NET 4 0 的缓存框架 应用架构 http msdn microsoft com en us windowsserver ee695849 as
  • while 循环读取文件提前结束

    最终目标是让我的 bash 脚本在多个服务器上执行命令 我差不多已经设置好了 我的 SSH 身份验证工作正常 但是这个简单的 while 循环快要我的命了 当我执行 while 循环 读取文件中的主机名时 当我运行 ssh HOST una
  • 在 mac osx 中反汇编 g++ 创建的可执行文件

    如何在 Mac OSx 上查看 C 程序的可执行文件 例如 a out 的反汇编版本 这不完全是你所要求的 但是g S从源代码生成汇编 预计比反汇编版本更具可读性 如果你不能重新编译 S 例如没有源代码 那么gdb让你可以拆卸 就像objd
  • dart - 使用空安全时订阅的正确编码模式?

    我已经启用了 dart 2 8 实验性空安全性 我有以下退出代码 StreamSubscription
  • 增强 python 链接

    我正在为我的游戏添加 boost python 我为我的类编写包装器以在脚本中使用它们 问题在于将该库链接到我的应用程序 我在用着cmake构建系统 现在我有一个简单的应用程序 包含 1 个文件和 makefile PYTHON usr i
  • 如何在AWS-Glue脚本中编写用户定义函数?

    我们如何在动态框架或数据框架上使用 PySpark Python 在 AWS Glue 脚本中编写用户定义的函数 Dynamicframe 并不像 Dataframe API 支持 UDF 那样完全支持它 您将获得的最好结果是 MAP ap
  • 应用程序如何使用 Android 4+ 的 Google 离线地图?

    Android 版本 4 引入了离线地图 我可以在手机上选择要缓存的区域 然后 Google 地图会将该地图数据下载到手机上 正如我收到的评论 我想使用我的设备上已有的数据 如果用户之前已经下载了离线地图使用 并且不要打开与 Google
  • 如何知道Python中海龟图形上特定文本的像素大小?

    如标题所示 当我执行以下代码时 import turtle turtle write some text 我想知道字符串的整体大小 包括高度和宽度 some text画布上的乌龟图形 我怎样才能做到这一点 字体大小只能告诉你half您需要知
  • 将名字和姓氏标记为一个标记

    是否可以对标记中的文本进行标记 以便将名字和姓氏组合在一个标记中 例如 如果我的文本是 text Barack Obama is the President Then text split 结果是 Barack Obama is the P
  • 未找到隧道错误 Pyngrok Streamlit 协作

    我正在开发一个用户界面streamlit并使用pyngrok来自科拉布 一切都工作正常 直到几天前开始出现隧道未找到错误 我正在使用下面的代码 我也升级了pyngrok并尝试过 但同样的问题仍然存在 对于整个 UI 构建和 Colab 来说
  • 在没有中间过程的情况下,如何在 Python 调试器中查看函数的返回值?

    PDB 和其他 Python 调试器 有一种简单的方法来查看任何当前变量的值 只需输入它即可 但是 有时我使用的库不将其返回值存储在中间变量中 这是一个示例函数 def do stuff args kwds return f args kw
  • 使用ARAnchor插入节点和直接插入节点有什么区别?

    在ARKit中 我发现了两种在hitTest之后插入节点的方法 插入 ARAnchor 然后在中创建节点renderer renderer SCNSceneRenderer nodeFor anchor ARAnchor gt SCNNod
  • Zend Framework:该行已标记为只读

    这是我第一次遇到这个问题 保存我的模型之一时 我收到错误消息 此行已标记为只读 不知道为什么我会收到此错误以及如何解决它 堆栈跟踪对我没有帮助 如何解决此问题以便保存记录 将行标记为只读可能是以下任一操作的结果 The Zend Db Se
  • Cocos2d中用手指旋转精灵

    我需要帮助用手指计算精灵的旋转 精灵旋转得很好 但在我手指第一次触摸时 它不知何故自行旋转了几度 此外 只有当手指围绕精灵中心旋转时 旋转才起作用 我正在尝试模拟自行车车轮 并有一个齿轮精灵和一个踏板精灵作为齿轮精灵的子级 我希望当我触摸踏
  • 输入类型=复位和敲除

    单击表单重置按钮时 Knockout 不会更新可观察值 http jsfiddle net nQXeM http jsfiddle net nQXeM HTML