Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >selectItem中的SelectOneRadio重置表索引计数

selectItem中的SelectOneRadio重置表索引计数
EN

Stack Overflow用户
提问于 2014-02-12 17:00:54
回答 1查看 1.2K关注 0票数 3

我有以下SelectOneRadio:

代码语言:javascript
运行
AI代码解释
复制
<p:selectOneRadio id="sex" tabindex="3" value="#{signUp.gender}" required="true">  
    <f:selectItem itemLabel="Male" itemValue="M"  />
    <f:selectItem itemLabel="Female" itemValue="F" />
</p:selectOneRadio>

尽管我的表单中下一个元素的表索引是4,当我在选项卡上指向"sex“组件时,选择任何一个selectItem,使用空格键或鼠标单击,当我再次按tab键时,焦点将转到使用tabindex = 1的元素,而不是下一个。我怎么才能解决这个问题?

我正在使用PrimeFaces4.0

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-02-13 04:42:41

我能够使用Primfaces showcase再现错误,我还找到了一个关于空格选择的错误,该选择仍然是打开的。

作为一项工作,您可以覆盖Primefaces默认的SelectOneRadio小部件并进行所需的更改。为了测试这种方法,我创建了一个名为customradio.js的文件,其内容如下:

代码语言:javascript
运行
AI代码解释
复制
PrimeFaces.widget.SelectOneRadio = PrimeFaces.widget.BaseWidget.extend({
    init: function(cfg) {
        this._super(cfg);

        //custom layout
        if (this.cfg.custom) {
            this.inputs = $('input:radio[name="' + this.id + '"]:not(:disabled)');
            this.outputs = this.inputs.parent().next('.ui-radiobutton-box:not(.ui-state-disabled)');
            this.labels = $();
            this.icons = this.outputs.find('.ui-radiobutton-icon');

            //labels
            for (var i = 0; i < this.outputs.length; i++) {
                this.labels = this.labels.add('label[for="' + this.outputs.eq(i).parent().attr('id') + '"]');
            }
        }
        //regular layout
        else {
            this.outputs = this.jq.find('.ui-radiobutton-box:not(.ui-state-disabled)');
            this.inputs = this.jq.find(':radio:not(:disabled)');
            this.labels = this.jq.find('label:not(.ui-state-disabled)');
            this.icons = this.jq.find('.ui-radiobutton-icon');
        }

        this.checkedRadio = this.outputs.filter('.ui-state-active');

        this.bindEvents();

        //pfs metadata
        this.inputs.data(PrimeFaces.CLIENT_ID_DATA, this.id);
    },
    bindEvents: function() {
        var $this = this;

        this.outputs.on('mouseover.selectOneRadio', function() {
            $(this).addClass('ui-state-hover');
        })
                .on('mouseout.selectOneRadio', function() {
                    $(this).removeClass('ui-state-hover');
                })
                .on('click.selectOneRadio', function() {
                    var radio = $(this),
                            input = radio.prev().children(':radio');

                    if (!radio.hasClass('ui-state-active')) {
                        $this.unselect($this.checkedRadio);
                        $this.select(radio);
                        input.trigger('click');
                        input.trigger('change');
                    }
                    else {
                        input.trigger('click');
                    }
                });

        this.labels.on('click.selectOneRadio', function(e) {
            var target = $(PrimeFaces.escapeClientId($(this).attr('for'))),
                    radio = null;

            //checks if target is input or not(custom labels)
            if (target.is(':input'))
                radio = target.parent().next();
            else
                radio = target.children('.ui-radiobutton-box'); //custom layout

            radio.trigger('click.selectOneRadio');

            console.log("click.selectOneRadio");

            e.preventDefault();
        });

        this.inputs.on('focus.selectOneRadio', function() {
            var input = $(this),
                    radio = input.parent().next();

            if (input.prop('checked')) {
                radio.removeClass('ui-state-active');
            }

            radio.addClass('ui-state-focus');
        })
                .on('blur.selectOneRadio', function() {
                    var input = $(this),
                            radio = input.parent().next();

                    if (input.prop('checked')) {
                        radio.addClass('ui-state-active');
                    }

                    radio.removeClass('ui-state-focus');
                })
                .on('keydown.selectOneRadio', function(e) {
                    var input = $(this),
                            currentRadio = input.parent().next(),
                            index = $this.inputs.index(input),
                            size = $this.inputs.length,
                            keyCode = $.ui.keyCode,
                            key = e.which;

                    switch (key) {
                        case keyCode.UP:
                        case keyCode.LEFT:
                            var prevRadioInput = (index === 0) ? $this.inputs.eq((size - 1)) : $this.inputs.eq(--index),
                                    prevRadio = prevRadioInput.parent().next();

                            input.blur();
                            $this.unselect(currentRadio);
                            $this.select(prevRadio);
                            prevRadioInput.trigger('focus').trigger('change');
                            e.preventDefault();
                            break;

                        case keyCode.DOWN:
                        case keyCode.RIGHT:
                            var nextRadioInput = (index === (size - 1)) ? $this.inputs.eq(0) : $this.inputs.eq(++index),
                                    nextRadio = nextRadioInput.parent().next();
                            input.blur();
                            $this.unselect(currentRadio);
                            $this.select(nextRadio);
                            nextRadioInput.trigger('focus').trigger('change');
                            e.preventDefault();
                            break;
                        case keyCode.SPACE:
                            if (!currentRadio.hasClass('ui-state-active')) {
                                $this.unselect($this.checkedRadio);
                                $this.select(currentRadio);
                                input.trigger('change');
                            }
                            break;
                    }
                });

        if (this.cfg.behaviors) {
            PrimeFaces.attachBehaviors(this.inputs, this.cfg.behaviors);
        }
    },
    unselect: function(radio) {
        radio.prev().children(':radio').prop('checked', false);
        radio.removeClass('ui-state-active').children('.ui-radiobutton-icon').removeClass('ui-icon ui-icon-bullet');
    },
    select: function(radio) {
        this.checkedRadio = radio;
        radio.addClass('ui-state-active').children('.ui-radiobutton-icon').addClass('ui-icon ui-icon-bullet');
        radio.prev().children(':radio').prop('checked', true).focus();
    }
});

主要变化是:

  1. 添加了keyCode.SPACE on 键控绑定和
  2. 添加和额外的.focus(),当选择上的收音机时,选择函数。

我希望这能帮到你。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21743236

复制
相关文章
密码学[3]:椭圆曲线
Short Weierstrass 椭圆曲线:F 是特征 q > 3 的有限域,a, b ∈ F,且 4a^3 + 27b^2 \ne 0 ,所有点 (x, y) ∈ F x F 满足方程 y^2 = x^3 + ax + b 所组成的集合,还有额外的一个点 O,称为无穷点:
谛听
2023/10/27
9040
ECC椭圆曲线密码学
椭圆曲线密码学是一种可逆的非对称密码学算法,其英语全称:Elliptic Curve Cryptography,缩写为:ECC。
arnodev
2023/03/17
1.1K0
关于以太坊账户的理解
以太坊是一个公共的区块链网络,可以通过各种不同类型的账户访问。与比特币类似,底层密码学用的是 SECP256K1 椭圆曲线。但这是什么意思呢?什么是账户?什么是密钥?什么是地址?为什么要校验 checksum ?
Tiny熊
2022/04/08
8580
椭圆曲线加密与NSA后门考古
本文主要介绍椭圆曲线的基本原理以及基于椭圆曲线的密码学实现,包括ECC加密、ECDH秘钥交换以及ECDSA签名算法,并介绍其中潜在的一些安全问题。其中分析了两个ECC实现相关的真实案例,分别是索尼PS3的签名问题和美国国家安全局NSA留下的椭圆曲线后门。
evilpan
2023/02/12
1.2K0
椭圆曲线加密与NSA后门考古
椭圆曲线密码学(ECC)算法
椭圆曲线密码术 (ECC) 是一种强大而高效的公钥密码术,与传统方法相比,它以较小的密钥大小提供强大的安全性。本文将让您清楚地了解 ECC、其优势及其在现代网络安全中的应用。
WoTrus SSL
2024/12/10
7020
椭圆曲线密码学(ECC)算法
数字签名-ECDSA
 &emspECDH是基于ECC(Elliptic Curve Cryptosystems,椭圆曲线密码体制,参看ECC)的DH( Diffie-Hellman)密钥交换算法。
Java小工匠
2018/08/10
3K0
数字签名与加密算法-下【mix指南之区块链】
如果把人比作手机,价值观、态度和习惯是这个操作系统底层,领域技能更像是系统上的app。技能不会的话装一个就好,如果大家有好的“app”,可以相互推荐,如果自己没有装这个“app”,也可以借别人的。
mixlab
2019/09/26
1.1K0
数字签名与加密算法-下【mix指南之区块链】
BIOS和EC
硬件平台 BIOS介绍 功能 类型,种类 内部模块(AWARD为例) EC介绍 功能(IT8511E LPC EC为例) EC与BIOS关系
全栈程序员站长
2022/09/09
2.1K0
BIOS和EC
以太坊密码学
以太坊有两种不同类型的账户:外部账户(EOAs)和合约。以太币的所有权是通过私钥,以太坊地址,和数字签名建立的。私钥是每个用户与以太坊交互的中心。事实上,账户地址直接来源于私钥:它唯一确定了一个以太坊地址,也叫账户。
Tiny熊
2022/04/08
1.1K0
以太坊密码学
比特币/以太坊的关键机制——secp256k1
比特币使用基于椭圆曲线加密的椭圆曲线数字签名算法(ECDSA)。特定的椭圆曲线称为secp256k1,即曲线
天地一小儒
2022/12/28
2.2K0
比特币/以太坊的关键机制——secp256k1
密码学在区块链中的应用:哈希算法与加密解密算法
安全性是实现区块链系统功能的基础,也是目前阻碍区块链应用推广的因素之一。密码学是信息安全的基石,以很小的代价给信息提供一种强有力的安全保护,广泛应用于政治、经济、军事、外交和情报等重要领域。 随着近年来计算机网络和通信技术迅猛发展,密码学得到了前所未有的重视并迅速普及,同时应用领域也广为拓展。本文选自《商用区块链技术与实践》一书,主要讲解密码学在区块链中的应用。 哈希算法 哈希算法(Hash Algorithms)也称为散列算法、杂凑算法或数字指纹,是可以将任意长度的消息压缩为一个固定长度的消息的算法。哈
博文视点Broadview
2023/05/19
2.5K0
密码学在区块链中的应用:哈希算法与加密解密算法
[以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用
本文转载来源自:http://blog.csdn.net/teaspring/article/details/77834360 感谢原作者teaspring的分享。本文已经得到原作者的转载许可。 数字签名算法在Ethereum中的应用不少,目前已知至少有两处:一是在生成每个交易(Transaction, tx)对象时,对整个tx对象进行数字签名;二是在共识算法的Clique算法实现中,在针对新区块进行授权/封印的Seal()函数里,对新创建区块做了数字签名。这两处应用的签名算法都是椭圆曲线数字签名加密
月牙寂道长
2018/03/29
4K1
[以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用
开源项目介绍|KonaJDK - 腾讯JDK发行版
2022腾讯犀牛鸟开源人才培养计划 开源项目介绍 滑至文末报名参与开源人才培养计划 提交 KonaJDK 项目Proposal KonaJDK 项目介绍 腾讯KonaJDK是OpenJDK的发行版,并且针对大数据,机器学习和云计算等场景进行了独特的优化,在高性能及安全性方面多有建树。腾讯KonaJDK团队拥有多位OpenJDK Reviewer,Committer和Author,在国内JDK团队中首屈一指。而OpenJDK开源社区活跃且成熟,它的协作模式也是开源项目中的典范,无论对于初识的爱好者,还是长期的
腾讯开源
2022/07/01
1.7K0
开源项目介绍|KonaJDK - 腾讯JDK发行版
Polkadot中的密码学
Polkadot的帐户主要使用带有Schnorr签名的公钥,Polkadot认为它满足:
MikeLoveRust
2019/10/09
1.3K0
写给开发人员的实用密码学 - 非对称加密算法
在前面的文章《写给开发人员的实用密码学 - 对称加密算法》中,介绍了现代密码学中非常重要的加密解密算法。从工程学的角度,选取密钥足够长的加密算法(比如AES 256、AES 512),是无法破解的。但在对称加密算法中,存在明显的薄弱环节,那就是密钥的存储与分发。因为算法是公开的,那么决定加密系统是否安全的因素就是密钥。
云水木石
2021/04/01
1.2K0
写给开发人员的实用密码学 - 非对称加密算法
大白话解读多重椭圆曲线Seele黄皮书
大家好,我是Seele生态区的志愿者小白,从今天起~我要开始给大家讲技术问题(小白紧张ing)。感觉真的是一场大事业耶~完全小白的小白用自己的角度给大家说说元一的一些特点。这会是一个神奇的充满比喻的理解过程,如有不对的时候,欢迎批评指正呦,小白一概不认~~
Seele元一
2018/09/06
7140
大白话解读多重椭圆曲线Seele黄皮书
Seele元一全球首发“多重椭圆曲线的数字签名方法”黄皮书 提供产业公链行业标准
8月10日Seele元一首份密码学领域黄皮书“多重椭圆曲线的数字签名方法”完整版内容正式公开。黄皮书在世界范围内首次提出基于多重椭圆曲线的数字签名方法,解决了特定椭圆曲线的安全后门和漏洞问题,实现了不同安全需求的动态签名。黄皮书对典型的多次签名机制进行优化,减少多重椭圆曲线数字签名的数据传输量,并给出了一些可备选的椭圆曲线参数。
Seele元一
2018/09/05
6330
Seele元一全球首发“多重椭圆曲线的数字签名方法”黄皮书 提供产业公链行业标准
hyperledger/fabric的关键机制——secp256r1
最近在研究fabric的加密源代码时,发现其默认的加密函数选择的是secp256r1(P256),这是基于go的官方补充包的实现。区别于比特币/以太坊使用的基于C库的实现(S256),好奇之下开始研究者两者之间的区别。
天地一小儒
2022/12/28
8280
深入解析ECC(椭圆曲线密码学)加解密算法
随着互联网的普及和信息安全需求的不断提高,密码学在保护数据安全方面发挥着越来越重要的作用。公钥密码体制作为一种常见的加密方式,为数据安全提供了可靠的保障。ECC(椭圆曲线密码学)是一种新型的公钥密码体制,相比传统的RSA算法,在相同安全性要求下,ECC所需的密钥长度更短,运算效率更高,因此在现代密码学领域得到了广泛应用。
公众号:码到三十五
2024/05/24
1.4K0
深入解析ECC(椭圆曲线密码学)加解密算法
工具系列 | 常用加密算法推荐清单
文中所列出的推荐算法皆已经过全世界密码学家验证和各国际标准化组织认证, 并在市场中广泛应用, 有望在未来足够长的时间内保证安全性和实现性能。
Tinywan
2021/01/03
2.7K0

相似问题

如何从Azure门户删除Web应用程序的应用程序洞察力监视(unmap)?

20

应用程序洞察力.NET \自定义度量在portal.azure.com中不显示在度量下

20

如何从Azure应用程序洞察力中删除数据

20

Azure应用程序洞察力-从抽样中排除自定义事件

12

从Azure门户删除Cosmos集合中的文档

119
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档