【发布时间】:2016-04-15 22:45:19
【问题描述】:
我正在使用 javascript 通过表单中的选择列来验证输入文本字段的值。
3 列 Sample Point、Sampling Type 和 Low TPC。我想为设备选项和人员选项的选择列(采样类型)制定规则。 Equipment 选项规则工作正常,但如果我在第 4 行选择 Personnel 选项,则其他行值(低 TPC 列)总是执行 Personnel 选项规则。
这是我的代码:
<div class="form-group">
<label for="location" class="col-md-2 control-label" style="text-align:left;">location</label>
<div class="col-sm-3">
<select name="location" id="location" class="form-control" onselect="setColor()">
<option value=""></option>
<option value="CMP">CMP</option>
<option value="DRP">DRP</option>
</select>
</div>
</div>
[...]
<div class="row">
<div class="col-md-12">
<div class="table-responsive">
[...]
<td>
<input type="text" name="sample_point[]" id="sample_point" size="17" value=""/></td>
<td>
<select name ="sampling_type[]" id="sampling_type">
<option value=""></option>
<option value="Equipment">Equipment</option>
<option value="Personnel">Personnel</option>
<option value="Environment">Environment</option>
</select>
</td>
<td>
<input type="text" name="low_tpc[]" id="low_tpc" onkeyup="setColor()" size="5" value=""/></td>
[...]
<script type="text/javascript">
function setColor() {
var dropdown = document.getElementById('location').value;
switch (dropdown) {
case 'DRP':
var obj = document.getElementsByTagName('input');
for(var i=0; i<obj.length; i++) {
if (obj[i].name == "sample_point[]") {
var sp = obj[i].value;
}
if (obj[i].name == "low_tpc[]") {
var low = obj[i].value;
var sels = document.getElementsByTagName("select");
for(var j=0; j<sels.length;j++) {
var sel = sels[j];
var type = sel.options[sel.selectedIndex].value;
switch (type) {
case 'Equipment':
if(sp.match(/black/i)) {
if(low > 5000) {
obj[i].style.backgroundColor = "#fd6969";
} else {
obj[i].style.backgroundColor = "";
}
} else if(sp.match(/red/i) || sp.match(/blue/i)) {
obj[i].style.backgroundColor = "";
} else {
if(low > 3200) {
obj[i].style.backgroundColor = "#fd6969";
} else {
obj[i].style.backgroundColor = "";
}
}
break;
case 'Personnel':
if(sp.match(/black/i)) {
if(low > 50) {
obj[i].style.backgroundColor = "#fd6969";
} else {
obj[i].style.backgroundColor = "";
}
} else {
obj[i].style.backgroundColor = "";
}
break;
default:
break;
}
}
}
}
break;
default:
break;
}
}
setColor();
</script>
如何在不影响其他选择规则的情况下在每个规则上执行选择?
【问题讨论】:
-
jsfiddle.net/arunpjohny/ywnkb788/1 ? - 使用您的演示标记更新小提琴以复制问题
-
感谢您的代码,我已经尝试过,但无法正常工作
标签: javascript html forms input