Fork me on GitHub

关于下拉框列表不可选择相同值的设置二:重置前一项相同选择

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>测试-重置前一项相同选择</title>
<style>
.ipt {
border: 1px solid #ddd;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.17) inset;
transition: border 0.2s linear 0s, box-shadow 0.2s linear 0s;
border-radius: 0 !important;
-moz-border-radius: 0 !important;
-webkit-border-radius: 0 !important;
height: 34px;
padding: 0px 5px;
line-height: 30px\9;
}
</style>
</head>
<body>
<div>
description:如果前一个下拉框选择的值和当前值一样则前一个下拉框重置,
以此类推。
</div>
<select class="ipt sortList">
<option value="0">请选择</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

<select class="ipt sortList">
<option value="0">请选择</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

<select class="ipt sortList">
<option value="0">请选择</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

<select class="ipt sortList">
<option value="0">请选择</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

<select class="ipt sortList">
<option value="0">请选择</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>

<button onclick="endList()" class="ipt">确定输出最后的值</button>
<p></p>
<script src="//cdn.bootcss.com/jquery/2.2.3/jquery.js"></script>
<script>
var _this='';
$(".sortList").on({
click:function(){
_this=$(this).find("option:selected").val();
console.log("操作click时的值:"+_this);
},
change:function(){
chageSort(this);
}
});

function chageSort(thx){
console.log(thx);
var sortList=$(".sortList");
/*注:index()用法: http://www.jb51.net/article/46769.htm*/
var _index=$(thx).index()-1;
console.log('当前元素下标:'+_index);
var _changeThis=$(thx).find("option:selected").val();
console.log("change事件后当前值:"+_changeThis);
/* for(var i=0;i<sortList.length;i++){
var isSelectedVal=sortList.eq(i).find("option:selected").val();
console.log("选择列表的各项值:"+isSelectedVal);
}*/
for(var j=0;j<sortList.length;j++){
var beforeVal=sortList.eq(j).find("option:selected").val();
if(beforeVal==_changeThis && j!=_index){
console.log('j:'+j);
/*注:法一:方法可行,但是不好*/
/*sortList.eq(j).html('<option value="0">请选择</option>'+
'<option value="1">1</option>'+
'<option value="2">2</option>'+
'<option value="3">3</option>'+
'<option value="4">4</option>'+
'<option value="5">5</option>');*/
/*注:法二:attr存在不可多次触发的bug,换prop*/
sortList.eq(j).find("option[value='0']").prop("selected","selected");
}
}
}

function endList(){
var arr=[];
var list=$(".sortList");
for(var i=0;i<list.length;i++){
arr.push(list.eq(i).find("option:selected").val());
}
document.querySelectorAll("p")[0].innerHTML=arr;
}
</script>
</body>
</html>
posted @   PC.aaron  阅读(1318)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示