jQuery實(shí)現(xiàn)密保互斥問(wèn)題解決方案
更新時(shí)間:2013年08月16日 18:18:26 作者:
密保通常都會(huì)有n個(gè)問(wèn)題,讓用戶選擇其中2、3個(gè),而且都不會(huì)讓用戶選擇重復(fù)的問(wèn)題。這就要求密?;コ猓唧w實(shí)現(xiàn)如下,有此需求的朋友可以參考下
密保互斥問(wèn)題:
密保通常都會(huì)有n個(gè)問(wèn)題,讓用戶選擇其中2、3個(gè),而且都不會(huì)讓用戶選擇重復(fù)的問(wèn)題。這就要求密?;コ?。
效果如下:

下面我用了jquery實(shí)現(xiàn)密?;コ?,用于解決密保,投票等類似互斥問(wèn)題,可以支持ie6+,火狐,谷歌,opera等大多數(shù)瀏覽器
demo下載:http://download.csdn.net/download/cwqcwk1/5956141
關(guān)鍵代碼:
<script type="text/javascript">
var qObj = {
elmt:'select',
tip:'請(qǐng)選擇',
tVal:'',
cur:[],
arr:{
1:'你的小學(xué)叫什么名字?',
2:'你最崇拜的人物是誰(shuí)?',
3:'你最喜歡的花名字叫什么?',
4:'你父親的職業(yè)是?',
5:'你父親的姓名?',
6:'你高中班主任的名字?'
}
}
$(function(){
//獲取所有的select選框
var elements = $(qObj.elmt);
//這一步只是初始化操作,將所有問(wèn)題寫入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選框添加監(jiān)聽(tīng)事件
elements.change(function(){
var
cValue = {}, //用于記錄當(dāng)前被選中的問(wèn)題
elmts = elements,
cIndex = elmts.index($(this)); //當(dāng)前select選框索引值
//遍歷所有select選框,記錄當(dāng)前每個(gè)選框的選擇
elmts.each(function(i){
qObj.cur[i] = $(this).val();
});
//記錄當(dāng)前已被選中的問(wèn)題,實(shí)現(xiàn)互斥鎖
for(var i in qObj.cur){
cValue[qObj.cur[i]] = 1;
}
//遍歷所有select選框,重置所有問(wèn)題
elmts.each(function(i){
//跳過(guò)當(dāng)前的select選框,因?yàn)樵搩?nèi)容無(wú)需校正
if (cIndex == i) return;
var html = '<option value="'+ qObj.tVal +'">'+ qObj.tip +'</option>';
for(var q in qObj.arr){
//如果是互斥內(nèi)容,且不屬于這個(gè)選框則跳過(guò)(重點(diǎn))
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>
密保通常都會(huì)有n個(gè)問(wèn)題,讓用戶選擇其中2、3個(gè),而且都不會(huì)讓用戶選擇重復(fù)的問(wèn)題。這就要求密?;コ?。
效果如下:

下面我用了jquery實(shí)現(xiàn)密?;コ?,用于解決密保,投票等類似互斥問(wèn)題,可以支持ie6+,火狐,谷歌,opera等大多數(shù)瀏覽器
demo下載:http://download.csdn.net/download/cwqcwk1/5956141
關(guān)鍵代碼:
復(fù)制代碼 代碼如下:
<script type="text/javascript">
var qObj = {
elmt:'select',
tip:'請(qǐng)選擇',
tVal:'',
cur:[],
arr:{
1:'你的小學(xué)叫什么名字?',
2:'你最崇拜的人物是誰(shuí)?',
3:'你最喜歡的花名字叫什么?',
4:'你父親的職業(yè)是?',
5:'你父親的姓名?',
6:'你高中班主任的名字?'
}
}
$(function(){
//獲取所有的select選框
var elements = $(qObj.elmt);
//這一步只是初始化操作,將所有問(wèn)題寫入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選框添加監(jiān)聽(tīng)事件
elements.change(function(){
var
cValue = {}, //用于記錄當(dāng)前被選中的問(wèn)題
elmts = elements,
cIndex = elmts.index($(this)); //當(dāng)前select選框索引值
//遍歷所有select選框,記錄當(dāng)前每個(gè)選框的選擇
elmts.each(function(i){
qObj.cur[i] = $(this).val();
});
//記錄當(dāng)前已被選中的問(wèn)題,實(shí)現(xiàn)互斥鎖
for(var i in qObj.cur){
cValue[qObj.cur[i]] = 1;
}
//遍歷所有select選框,重置所有問(wèn)題
elmts.each(function(i){
//跳過(guò)當(dāng)前的select選框,因?yàn)樵搩?nèi)容無(wú)需校正
if (cIndex == i) return;
var html = '<option value="'+ qObj.tVal +'">'+ qObj.tip +'</option>';
for(var q in qObj.arr){
//如果是互斥內(nèi)容,且不屬于這個(gè)選框則跳過(guò)(重點(diǎn))
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 MD5加密實(shí)現(xiàn)代碼
- jQuery ajax MD5實(shí)現(xiàn)用戶注冊(cè)即時(shí)驗(yàn)證功能
- jquery插件開(kāi)發(fā)之實(shí)現(xiàn)md5插件
- 基于JQuery的密碼強(qiáng)度驗(yàn)證代碼
- jquery判斷輸入密碼兩次是否相等
- jQuery判斷密碼強(qiáng)度實(shí)現(xiàn)思路及代碼
- 密碼框顯示提示文字jquery示例
- jquery密碼強(qiáng)度校驗(yàn)
- jQuery實(shí)現(xiàn)提示密碼強(qiáng)度的代碼
- PHP結(jié)合jQuery實(shí)現(xiàn)找回密碼
- jQuery隨機(jī)密碼生成的方法
- jQuery插件passwordStrength密碼強(qiáng)度指標(biāo)詳解
- jQuery簡(jiǎn)單實(shí)現(xiàn)MD5加密的方法
相關(guān)文章
原生Ajax 和jQuery Ajax的區(qū)別示例分析
這篇文章主要介紹了原生Ajax 和Jq Ajax的區(qū)別示例分析,需要的朋友可以參考下2014-12-12
jquery+json實(shí)現(xiàn)的搜索加分頁(yè)效果
Javascript,json 實(shí)現(xiàn)的js 腳本搜索,加分頁(yè),附源碼2010-03-03
jQuery延遲執(zhí)行的實(shí)現(xiàn)方法
這篇文章主要介紹了jQuery延遲執(zhí)行的實(shí)現(xiàn)方法,結(jié)合簡(jiǎn)單實(shí)例形式分析了jQuery針對(duì)無(wú)法同步執(zhí)行的情況使用延遲執(zhí)行的操作技巧,需要的朋友可以參考下2016-12-12
JQuery中$.each 和$(selector).each()的區(qū)別詳解
這篇文章主要介紹了JQuery中$.each 和$(selector).each()的區(qū)別詳解,本文給出了多個(gè)例子講解了它們之間的不同之處,需要的朋友可以參考下2015-03-03
jQuery Validate插件實(shí)現(xiàn)表單驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了jQuery Validate插件實(shí)現(xiàn)表單驗(yàn)證的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-08-08
jQuery(1.6.3) 中css方法對(duì)浮動(dòng)的實(shí)現(xiàn)缺陷分析
JavaScript中設(shè)置元素的浮動(dòng)屬性(float),標(biāo)準(zhǔn)瀏覽器使用cssFloat,IE舊版本使用styleFloat。2011-09-09
JQuery實(shí)現(xiàn)Table的tr上移下移功能
這篇文章主要為大家詳細(xì)介紹了JQuery實(shí)現(xiàn)Table的tr上移下移功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

