android checkbox 能不能拦截点击事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android checkbox 能不能拦截点击事件相关的知识,希望对你有一定的参考价值。
如题,求大神解答,我要实现选中checkbox 后禁止取消的操作。可是setOnCheckedChangeListenek只能获取更改后的状态
参考技术A 在setOnCheckedChangeListenek里面设置setChecked(true)就可以了,再怎么变都是被选中的状态。 参考技术B 继承checkbox ,把里面点击事件的方法重写成自己想做的事情追问明白了,可是不知道是哪个方法,不是onClick吧?
追答OnCheckedChangeListener 你试试这个
参考技术C 设置 enable 属性追问谢谢,我想知道,能在用户点击的时候就截获到更改状态的处理事件吗?
就好比Button的onClick,我可以自行决定点击后做什么操作。
OnCheckedChangedListener
jquery的表单验证方法,一个function能不能同时捕捉点击事件和按键事件?能不能再优化下,有代码。
// 该jquery扩展引自 http://www.ghostsf.com/tools/389.html 方法名是作者博客的命名
$.fn.ghostsf_serialize = function () {
var a = this.serializeArray();
var $radio = $(‘input[type=radio],input[type=checkbox]‘, this);
var temp = {};
$.each($radio, function () {
if (!temp.hasOwnProperty(this.name)) {
if ($("input[name=‘" + this.name + "‘]:checked").length == 0) {
temp[this.name] = "";
a.push({name: this.name, value: ""});
}
}
});
return jQuery.param(a);
};
// 粗制滥作的 表单判空
function verify2(valbtnId,valformId) {
$(valbtnId).attr(‘disabled‘,true);
var reg = /^\s*$/g;
$(valformId).keyup(‘change‘,function valkeyup(){
//var formdataarray = $(valformId).serialize().split(‘&‘); 未获取到未选中的 checkbox radio
//使用扩展后 ghostsf_serialize() 方法可以获取
var formdataarrayall = $(valformId).ghostsf_serialize().split(‘&‘);
var countf = 0;
for(var i = 0; i < formdataarrayall.length; i++) {
var labeltype = formdataarrayall[i].substring(0,formdataarrayall[i].indexOf(‘=‘));
if ($(‘*[name=‘+labeltype+‘]‘).is(‘select‘)) {
//如果是下拉框 触发键盘事件 ?
if($(‘select[name=‘+labeltype+‘]‘).children(‘options:selected‘)){
if (!reg.test($(‘select[name=‘+labeltype+‘]:selected‘).val())) {
countf++;
}
}
}
if ($(‘*[name=‘+labeltype+‘]‘).is(‘input‘)) {
if($(‘*[name=‘+labeltype+‘]‘).attr(‘type‘) == ‘text‘){
if (!reg.test($(‘input[name=‘+labeltype+‘]‘).val())) {
countf++;
}
}
if ($(‘*[name=‘+labeltype+‘]‘).attr(‘type‘) == ‘checkbox‘) {
if ( !reg.test($(‘input[name=‘+labeltype+‘]:checked‘).val()) && $(‘input[name=‘+labeltype+‘]:checked‘).val()!= undefined) {
countf++;
}
}
if ($(‘*[name=‘+labeltype+‘]‘).attr(‘type‘) == ‘radio‘) {
if (!reg.test($(‘input[name=‘+labeltype+‘]:checked‘).val()) && $(‘input[name=‘+labeltype+‘]:checked‘).val()!= undefined) {
countf++;
}
}
}
}
valreturn(countf == i ? false : true,valbtnId);
});
$(valformId).change(‘click‘,function valchange(){
var formdataarrayall = $(valformId).ghostsf_serialize().split(‘&‘);
var countf = 0;
for(var i = 0; i < formdataarrayall.length; i++) {
var labeltype = formdataarrayall[i].substring(0,formdataarrayall[i].indexOf(‘=‘));
if ($(‘*[name=‘+labeltype+‘]‘).is(‘select‘)) {
if($(‘select[name=‘+labeltype+‘]‘).children(‘options:selected‘)){
if (!reg.test($(‘select[name=‘+labeltype+‘]‘).val())) {
countf++;
}
}
}
if ($(‘*[name=‘+labeltype+‘]‘).is(‘input‘)) {
//alert($(‘*[name=‘+labeltype+‘]‘).prop(‘type‘));
if($(‘*[name=‘+labeltype+‘]‘).attr(‘type‘) == ‘text‘){
if (!reg.test($(‘input[name=‘+labeltype+‘]‘).val())) {
countf++;
}
}
if ($(‘*[name=‘+labeltype+‘]‘).attr(‘type‘) == ‘checkbox‘) {
if ( !reg.test($(‘input[name=‘+labeltype+‘]:checked‘).val()) && $(‘input[name=‘+labeltype+‘]:checked‘).val()!=undefined) {
countf++;
}
}
if ($(‘*[name=‘+labeltype+‘]‘).attr(‘type‘) == ‘radio‘) {
if (!reg.test($(‘input[name=‘+labeltype+‘]:checked‘).val()) && $(‘input[name=‘+labeltype+‘]:checked‘).val()!=undefined) {
countf++;
}
}
}
}
valreturn(countf == i ? false : true,valbtnId);
});
}
function valreturn(val,valbtnId){
$(valbtnId).attr(‘disabled‘,val);
return val;
}
以上是关于android checkbox 能不能拦截点击事件的主要内容,如果未能解决你的问题,请参考以下文章
Android ListView嵌套checkbox点击事件
winform中datagridview中的checkbox选中问题
C#Dategridview动态生成控件checkbox,为啥运行时点击checkbox不能选中?