使用cshtml和javascript动态更改dropdownlist
Changing dropdownlist dynamically with cshtml and javascript
我正在尝试做一些有点超出我掌控范围的事情,我主要希望在概念上指向正确的方向(当然,代码永远不会有坏处)。
在cshtml页面中,我有n个下拉列表,每个下拉列表的值为1、2、3…n。我不希望任何下拉列表包含与页面上其他下拉列表相同的值。我正在寻找一种使用Javascript动态实现这一点的方法。
有什么聪明的方法可以做到这一点吗?我可以想到一个非常丑陋的算法,每次下拉列表中的一个更改值时,都要遍历每个下拉列表,查找任何具有相同值的下拉列表,并向其中添加1(如果我们处于n,则滚动到1)。然后必须再次进行,以使用与上一个相同的值更改我们遇到的下一个列表。最终,我们会在每个列表中执行n次之后停止(运行时间O(n^2))。即使没有一种聪明的方法来做到这一点,我也无法想象这接近于最佳解决方案。
任何建议都将不胜感激。谢谢
在javascript中有一个值数组,每次下拉列表更改时,执行以下操作:
- 检查该值是否已存在于数组中,如果存在,则阻止该操作
- 将新选择存储在阵列中
它可能还有更多功能(例如,您可能还需要将值的源dropdownlist ID存储在数组中,这样您就知道如果dropdownlists第二次更改,您需要删除哪个值),但这个总体想法应该简单高效。
如果我理解正确,它可能比看起来更容易。
我知道你有n个(比方说3个)下拉列表,分别选在1、2、3。但是,如果您在第一个下拉列表中选择3,则需要使用第三个下拉列表来防止重复的3。但您可以尝试按值查找此重复项,并将其值设置为您正在更改的下拉列表的旧值。
例如,使用jQuery:http://www.w3schools.com/jquery/sel_attribute_equal_value.asp
$("[value=3]").attr("value", 1)
这应该保持没有重复的状态,否则,您可能需要根据找到的元素数量做一些明智的事情,比如设置为未选中。
使用jquery,添加一个处理程序来获取旧值和新值。然后,您可以在所有其他选择中启用旧值,并禁用新值。这需要一些脚本技巧,但这篇文章将有所帮助:在更改之前获取选择下拉列表的值
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var valueToEnable;
var defaultValue = '0';
$('.theDropdowns').on('focus', function () {
valueToEnable = this.value;
}).blur(function() {
$('.theDropdowns option[value=' + valueToEnable + ']').removeAttr('disabled');
var valueToDisable = this.value;
if (valueToDisable != defaultValue) {
$('option[value=' + valueToDisable + ']', $('.theDropdowns').not(this)).attr('disabled', 'disabled');
}
});
});
</script>
</head>
<body>
<select class="theDropdowns">
<option value="0">Select a value</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select class="theDropdowns">
<option value="0">Select a value</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select class="theDropdowns">
<option value="0">Select a value</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</body>
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 动态分配GA增强型电子商务跟踪器
- onkeyup无法动态创建多个文本区域
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何使Javascript动态html表及其上的事件
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 如何使用javascript从主svg对象动态创建svg视图框
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 通过在Dojo mobile ViewController.openExternalView中动态更改打开同一外部视图的
- 如何在Google柱状图中动态添加行/列
- 困在逻辑中试图定位动态的东西
- 在动态创建的元素上获取对特定选择器的引用
- 如何动态插入jquery代码
- 使用Google Visualization动态调用构造函数
- 如何通过codeehind c#中dropdownlist中的javascript访问动态生成的选项
- 使用jQuery动态添加MVC DropdownList HTML Helper
- 使用cshtml和javascript动态更改dropdownlist
- 如何动态创建dropdownlist的ID,并检查其值是否改变