Knockout: radio选项切换引发click事件的一点总结

1.场景:如下图,当选择定期存款时,输入框右边出现红色的必输项星号,当选择活期存款时,不再出现该星号。

2.思路一:不使用knockout,直接用click事件,就可以实现这个需求,代码如下:

<html>
<head>
</head>
<body  >
  <input id="Radio3" name="rdoCunKuanType" data-bind="checked:CunKuanType" onclick="document.getElementById(‘f1‘).style.display = ‘inline‘" value="H" checked type="radio" />活期存款
  <input id="Radio4" name="rdoCunKuanType" data-bind="checked:CunKuanType" onclick="document.getElementById(‘f1‘).style.display = ‘none‘" value="D" type="radio">定期存款
  <br />定期几年:<input  type="text" />年 <font id="f1" color="red">*</font>
</body>
</html>

  

3.思路二:使用Knockout的click事件及监控属性.
代码如下:

htm

<head>

   <script src="../lib/require/require.js" data-main="ko1_radio3_main"></script>

</head>

<body  >

  <input id="Radio3" name="rdoCunKuanType" data-bind="checked:CunKuanType,click:RadioClick" value="H" checked type="radio" />活期存款 

  <input id="Radio4" name="rdoCunKuanType" data-bind="checked:CunKuanType,click:RadioClick" value="D" type="radio">定期存款

  <br />定期几年:<input type="text" />年 <font data-bind="visible:ShowStar" color="red">*</font>

</body>

</html>

js

require.config({

    paths: {

        "knockout": "../lib/knockout/knockout-2.3.0",

        "jquery": "../lib/jquery/jquery-1.9.1.min"

    }

});

require([‘jquery‘, ‘knockout‘], function ($, ko) {

    //数据绑定

    $(document).ready(function () {

        var viewModel = {

            CunKuanType: ko.observable("H"),

            ShowStar: ko.observable(false), //汇往国家及地区星号显示标示符

            RadioClick: function () {

                if (viewModel.CunKuanType() == "D") {

                    viewModel.ShowStar(true);

                }

                else {

                    viewModel.ShowStar(false);

                }

                return true;

            }

        };

      

        ko.applyBindings(viewModel); 

    });

});

需要注意的是,RadioClick最后一定要返回一个true,否则click事件无效。

4.思路三:完全不用click事件,纯粹用监控依赖属性就可以搞定.

这个最符合Knockout所主张的思想了,一个属性变了,它本身并不引发操作,而是利用监控它也就订阅它的方法自动引发操作,不必再写click了,代码如下:

htm

<html>

<head>

   <script src="../lib/require/require.js" data-main="ko1_radio1_main"></script>

</head>

<body  >

  <input id="Radio1" name="rdoCunKuanType" data-bind="checked:CunKuanType" value="H" checked type="radio" />活期存款 

  <input id="Radio2" name="rdoCunKuanType" data-bind="checked:CunKuanType" value="D" type="radio">定期存款

  <br />定期几年:<input type="text" />年 <font data-bind="visible:ShowStar" color="red">*</font>

</body>

</html>

js

require.config({

    paths: {

        "knockout": "../lib/knockout/knockout-2.3.0",

        "jquery": "../lib/jquery/jquery-1.9.1.min"

    }

});

require([‘jquery‘, ‘knockout‘], function ($, ko) {

    //数据绑定

    $(document).ready(function () {

        var viewModel = {

            CunKuanType: ko.observable("H")

        };

        viewModel.ShowStar = ko.dependentObservable(function ()

        {

            if (viewModel.CunKuanType() == "H")

            {

                return false;

            }

            else

            {

                return true;

            }

        }, viewModel);

      

        ko.applyBindings(viewModel);

    });

});

时间: 2024-08-07 02:30:09

Knockout: radio选项切换引发click事件的一点总结的相关文章

jquery单选框radio绑定click事件实现和是否选中的方法

使用jquery获取radio的值,最重要的是掌握jquery选择器的使用,在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来筛选,比如有以下的一些radio项: 1.<input type="radio" name="testradio" value="jquery获取radio的值" />jquery获取radio的值2.<input type="radio" name=&

4.Knockout.Js官网学习(事件绑定)

前言 click绑定在DOM元素上添加事件句柄以便元素被点击的时候执行定义的JavaScript 函数.大部分是用在button,input和连接a上,但是可以在任意元素上使用. 简单示例 <h2>ClickBind</h2> <div> You've clicked <span data-bind="text: numberOfClicks"></span> times <button data-bind="

Fastclick 导致click事件触发两次的问题

我在移动web上使用Fastclick这个库去解决300ms延迟问题,但是在安卓4.2下的webview中引发了另一个比较奇怪的bug. 在A页面中有个 a button,在B页面中有个 b button,a和b都在同一个position,给a和b都注册一个click事件.a的click事件触发后跳转到B页面.当a被点击后调到B页面,你会发现b按钮的click事件也被触发了. 没错,事件'穿透'了两个页面! 但其实并没有穿透,点击a按钮时,其实有如下两个动作: fastclick用touchst

JQuery触发radio或checkbox的change事件

在JQuery中,当给radio或checkbox添加一个change事件时,如果它的值发生变化就会触发change事件;本文将详细介绍如何利用JQuery触发Checkbox的change事件需要了解的朋友可以参考下 早上要做一功能,checkbox被选中时,显示隐藏的层,取消选中时,再隐藏选中的层. 初始代码如下: 复制代码代码如下: $(function(){ $("#ischange").change(function() { alert("checked"

Fastclick 导致click事件触发两次的问题,fastclickclick

文章原文csdn链接:www.foreverpx.cn 我在移动web上使用Fastclick这个库去解决300ms延迟问题,但是在安卓4.2下的webview中引发了另一个比较奇怪的bug. 在A页面中有个 a button,在B页面中有个 b button,a和b都在同一个position,给a和b都注册一个click事件.a的click事件触发后跳转到B页面.当a被点击后调到B页面,你会发现b按钮的click事件也被触发了. 没错,事件‘穿透’了两个页面! 但其实并没有穿透,点击a按钮时,

jQuery-介绍 加载 选择器 样式操作 属性操作 绑定click事件

jQuery - 介绍 加载 选择器 样式操作 属性操作 绑定click事件 注意:以下部分问题不能实现效果,因该是单词拼写错误(少个t)或者没有加引号(“swing”)... jquery介绍 jQuery是目前使用最广泛的javascript函数库.据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. jQuery的版本分为1.x系列和2.x.3.x系列,1.x系列兼容低版本的浏览器,2.x.3.x系列放弃支持低版本浏览器

toggle([speed],[easing],[fn]) 用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件。

toggle([speed],[easing],[fn]) 概述 用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件. 如果元素是可见的,切换为隐藏的:如果元素是隐藏的,切换为可见的. 1.9版本 .toggle(function, function, … ) 方法删除,jQuery Migrate(迁移)插件可以恢复此功能.大理石平台生产厂 参数 fn,fn2,[fn3,fn4,...]Function,....V1.0 Removed 1.9 fn:第一数次点击时要执

purple-class2-默认选项切换

ylbtech-class:purple-class2 A, 返回顶部 1,默认选项切换 #region 默认选项切换 public delegate IList<SelectListItemInfo> DelegateDrop(IList<SelectListItemInfo> dals, string arrayStr); /// <summary> /// 默认选项切换 /// </summary> /// <param name="a

从click事件理解DOM事件流

事件流是用来解释页面上的不同元素接受一个事件的顺序,首先要明确两点: 1.一个事件的影响元素可能不止一个(同心圆理论),但目标元素只有一个. 2.如果这些元素都绑定了相同名称的事件函数,我们怎么知道这些函数的运行顺序?于是有了事件流的概念(事件捕捉,事件冒泡) 举个例子: <div id="outer"> <p id="inner">Click me!</p> </div> 为了看起来方便,先无视CSS样式,那么蓝色的