密保互斥问题:
密保通常都会有n个问题,让用户选择其中的2、3个问题,但不能让用户选择到重复的问题。这就要求密保互斥。
效果如下:
下面我用了jquery实现密保互斥,用于解决密保,投票等类似互斥问题,可以支持ie6+,火狐,谷歌,opera等大多数浏览器
demo下载:http://download.csdn.net/download/cwqcwk1/5956141
关键代码:
<script type="text/javascript">
var qObj = {
elmt:'select',
tip:'请选择',
tVal:'',
cur:[],
arr:{
1:'你的小学叫什么名字?',
2:'你最崇拜的人物是谁?',
3:'你最喜欢的花名字叫什么?',
4:'你父亲的职业是?',
5:'你父亲的姓名?',
6:'你高中班主任的名字?'
}
}
$(function(){
//获取所有的select选框
var elements = $(qObj.elmt);
//这一步只是初始化操作,将所有问题写入select选框
elements.each(function(i){
var html = '<option value="'+ qObj.tVal +'">'+ qObj.tip +'</option>';
for(var q in qObj.arr){
html += '<option value="'+ q +'">' + qObj.arr[q] + '</option>';
}
$(this).html(html);
});
//select选框添加监听事件
elements.change(function(){
var
cValue = {}, //用于记录当前被选中的问题
elmts = elements,
cIndex = elmts.index($(this)); //当前select选框索引值
//遍历所有select选框,记录当前每个选框的选择
elmts.each(function(i){
qObj.cur[i] = $(this).val();
});
//记录当前已被选中的问题,实现互斥锁
for(var i in qObj.cur){
cValue[qObj.cur[i]] = 1;
}
//遍历所有select选框,重置所有问题
elmts.each(function(i){
//跳过当前的select选框,因为该内容无需校正
if (cIndex == i) return;
var html = '<option value="'+ qObj.tVal +'">'+ qObj.tip +'</option>';
for(var q in qObj.arr){
//如果是互斥内容,且不属于这个选框则跳过(重点)
if (cValue[q] && q != qObj.cur[i]) continue;
html += '<option value="'+ q +'"' + (q == qObj.cur[i]?' selected="selected"': '') + '>' + qObj.arr[q] + '</option>';
}
$(this).html(html);
});
});
})
</script>
密保1:<select style="width:180px"></select><br/>
密保2:<select style="width:180px"></select><br/>
密保3:<select style="width:180px"></select>
分享到:
相关推荐
总结起来,利用jQuery实现密保互斥的关键在于事件监听、事件阻止、状态管理以及定时器的使用。通过这些技术,我们可以构建出高效且用户友好的互斥机制,保护我们的应用程序免受恶意或意外的重复操作。
标题中提到的“jQuery实现密保互斥问题解决方案”,关键词为“jQuery”和“密保互斥”。在描述中,作者指出需要实现的功能是让一个系统能够展示多个问题供用户选择,但用户只能从这些问题中选择2到3个,且每次选择都...
在本示例中,我们将探讨如何使用jQuery实现“select”元素的互斥联动效果,这是一种常见的表单控件交互设计,常用于多级筛选或配置场景。 一、基本概念 1. jQuery:jQuery 是一个高效、简洁而易用的JavaScript库,...
SignalR实现登录互斥 SignalR是一种实时通信库,允许开发者轻松地在Web应用程序中实现实时通信功能。下面将详细介绍使用SignalR 1.1.4版本实现用户登录互斥功能的知识点。 标题解释 SignalR实现登录互斥的标题...
f: 利用事件实现线程同步问题 g: 利用互斥量来解决线程同步互斥问题 h: problem1 生产者消费者问题 (1生产者 1消费者 1缓冲区) problem1 more 生产者消费者问题 (1生产者 2消费者 4缓冲区) problem2 读者与写...
### 解决多线程编程中的同步互斥问题 在现代软件开发中,多线程编程是一种常见的技术,它能够充分利用计算机系统的多核处理能力,提高应用程序的执行效率。然而,多线程编程也带来了一系列复杂的问题,其中最典型的...
本项目通过一个生产者消费者问题的实例,展示了如何在Java中实现线程间的同步与互斥。 生产者消费者问题是经典的并发问题之一,它涉及到两个类型的线程:生产者和消费者。生产者负责生成数据(产品),而消费者则...
这种机制是通过锁来实现的,本文将深入探讨如何在编程中实现程序的互斥运行,并提供一个实例源码进行解析。 一、互斥锁的概念 互斥锁(Mutex)是一种同步原语,用于控制对共享资源的访问。当一个线程获得锁后,其他...
一个简单的实现同步与互斥的c语言程序,更好理解同步互斥信号量的原理
在Linux操作系统中,多进程和多线程是两种并发执行的方式,它们在处理并发问题时,经常需要进行同步和互斥操作,以确保数据的一致性和程序的正确性。本篇将详细介绍这两种并发模型以及如何在Linux环境中实现同步互斥...
本文将详细介绍如何使用C#实现程序互斥运行,并探讨其背后的原理。 首先,程序互斥的实现基于Windows操作系统中的Mutex(互斥锁)对象。Mutex是一个系统级同步对象,它可以确保在任何时刻只有一个线程访问共享资源...
通过合理地创建和管理互斥锁,我们可以确保在同一时刻只有一个程序实例运行,从而提高用户体验并避免潜在的问题。对于初学者来说,理解和掌握这一技巧是非常有价值的,而对于经验丰富的开发者来说,这也是编写健壮、...
集合A和B互斥是指对于矩阵的任意一行,同时满足下列2个条件:1)若A中有一个或多个元素在这一行上的值是1,则B中的元素在这一行全部是0;2)若B中有一个或多个元素在这一行上的值是1,则A中的元素在这一行全部是0。...
本主题将深入探讨如何使用互斥锁、条件变量以及共享内存这三种机制来实现无亲缘关系间进程的同步通信。 1. **互斥锁(Mutex)**: 互斥锁是一种基本的同步原语,用于保护共享资源。当一个进程获取了互斥锁后,其他...
js 实现 两个checkbox互斥问题! 值得下载看看!资源免费,大家分享!!
在实现线程互斥时,一种常见的方法是使用互斥量(Mutex)。互斥量是一个同步对象,当一个线程拥有互斥量时,其他试图获取该互斥量的线程将被阻塞,直到持有互斥量的线程释放它。在C++或Java中,可以使用`std::mutex`...
这通常通过创建全局共享资源来实现,如全局互斥体(Mutex)。本示例"演示了在WIN32下实现程序互斥运行的方法",涉及到的核心知识点包括: 1. **全局互斥体(Mutex)**: Mutex是多线程编程中的关键概念,用于控制对...
在操作系统中,资源共享和互斥问题是一个至关重要的概念,尤其在多任务或多线程环境中。这个问题通过“儿子与女儿吃桔子和苹果”的例子得以生动地展现。 假设父亲代表操作系统,他拥有一个水果篮,里面装有苹果和...
这可以通过互斥锁(mutex)来实现,使得同一时间只有一个线程可以访问特定资源。 2. **同步对象**:顾客和柜员之间存在同步需求,例如,柜员只有在有顾客等待时才能叫号,顾客只有在被叫到时才能开始服务。这需要...
当多个线程同时运行在同一个进程中时,为了确保数据的一致性和避免资源竞争,就需要实现线程间的同步和互斥。这篇文档将深入探讨如何在编程中实现这一目标。 标题:“线程间实现同步互斥的方法” 在多线程环境中,...