我在JSP中設定了數個下拉串列框,每一個選項都有Value,默認為零,我希望兩個頻道的值不能完全相同,相同會彈出警告框,舉個例子,程式中的CH1和CH2可以是“RGDM1 101700”和“RGDM1 102450”,但不能同時為“RGDM1 102450”,這一點可以判斷,但我希望消除默認值0的影響,代碼如下:
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ page import="java.io.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>UE2020 Web Server Interface</title>
<meta name="keywords" content="UP2020 Industrial equipment control" />
<meta name="description" content="UP2020 Industrial equipment control" />
<link rel="stylesheet" type="text/css" href="https://bbs.csdn.net/topics/vendor/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="https://bbs.csdn.net/topics/fonts/font-awesome-4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="https://bbs.csdn.net/topics/fonts/iconic/css/material-design-iconic-font.min.css">
<link rel="stylesheet" type="text/css" href="https://bbs.csdn.net/topics/css/util.css">
<link rel="stylesheet" type="text/css" href="https://bbs.csdn.net/topics/css/Intf.css">
</head>
<body>
<div class="top">
<font color="orange" size="5">
PSBC2020
</font>
</div>
<form>
<div class="box3">
<table class="tb">
<tr>
<th> </th>
<th>LED</th>
<th>IOA</th>
<th>Description</th>
</tr>
<tr>
<th>CH1</th>
<td> <select id="LED1" class="CD" onchange="check()">
<option value="https://bbs.csdn.net/topics/0"> </option>
<option value="https://bbs.csdn.net/topics/1">RGDM1</option>
<option value="https://bbs.csdn.net/topics/2" >RGDM2</option>
</select></td>
<td><select id="IOA1" class="CD" onchange="check()">
<option value="https://bbs.csdn.net/topics/0"> </option>
<option value="https://bbs.csdn.net/topics/1">101700</option>
<option value="https://bbs.csdn.net/topics/2" >102450</option>
</select> </td>
<td></td>
</tr>
<tr>
<th>CH2</th>
<td> <select id="LED2" class="CD" onchange="check()">
<option value="https://bbs.csdn.net/topics/0"> </option>
<option value="https://bbs.csdn.net/topics/1">RGDM1</option>
<option value="https://bbs.csdn.net/topics/2" >RGDM2</option>
</select></td>
<td> <select id="IOA2" class="CD" onchange="check()">
<option value="https://bbs.csdn.net/topics/0"> </option>
<option value="https://bbs.csdn.net/topics/1">101700</option>
<option value="https://bbs.csdn.net/topics/2" >102450</option>
</select> </td>
<td></td>
</tr>
<tr>
<th>CH3</th>
<td> <select id="LED3" class="CD" onchange="check()">
<option value="https://bbs.csdn.net/topics/0"> </option>
<option value="https://bbs.csdn.net/topics/1">RGDM1</option>
<option value="https://bbs.csdn.net/topics/2" >RGDM2</option>
</select></td>
<td><select id="IOA3" class="CD" onchange="check()">
<option value="https://bbs.csdn.net/topics/0"> </option>
<option value="https://bbs.csdn.net/topics/1">101700</option>
<option value="https://bbs.csdn.net/topics/2" >102450</option>
</select> </td>
<td></td>
</tr>
<tr>
<th>CH4</th>
<td> <select id="LED4" class="CD" onchange="check()">
<option value="https://bbs.csdn.net/topics/0"> </option>
<option value="https://bbs.csdn.net/topics/1">RGDM1</option>
<option value="https://bbs.csdn.net/topics/2" >RGDM2</option>
</select></td>
<td><select id="IOA4" class="CD" onchange="check()">
<option value="https://bbs.csdn.net/topics/0"> </option>
<option value="https://bbs.csdn.net/topics/1">101700</option>
<option value="https://bbs.csdn.net/topics/2" >102450</option>
</select> </td>
<td></td>
</tr>
</table>
<input type="reset" name="reset" class="check" value="https://bbs.csdn.net/topics/Reset" style="width:100px;height:40px;float:left;"
onmouseover="this.style.backgroundColor = '#6f6f6f';" onmouseout="this.style.backgroundColor = '';"/>
<input type="submit" name="submit" class="check" value="https://bbs.csdn.net/topics/Submit" style="width:100px;height:40px;float:right;"
onmouseover="this.style.backgroundColor = '#6f6f6f';" onmouseout="this.style.backgroundColor = '';"/>
</div>
</form>
</body>
<script type="text/javascript">
function check() {
var LED1 = document.getElementById("LED1").value;
var LED2 = document.getElementById("LED2").value;
var LED3 = document.getElementById("LED3").value;
var LED4 = document.getElementById("LED4").value;
var IOA1 = document.getElementById("IOA1").value;
var IOA2 = document.getElementById("IOA2").value;
var IOA3 = document.getElementById("IOA3").value;
var IOA4 = document.getElementById("IOA4").value;
if (LED1 === LED2 || LED1 === LED3 || LED1 === LED4 || LED2 === LED3 || LED2 === LED4 || LED3 === LED4) {
if (IOA1 === IOA2 || IOA1 === IOA3 || IOA1 === IOA4 || IOA2 === IOA3 || IOA2 === IOA4 || IOA3 === IOA4) {
alert("There is no same input value for diffrent channel! ");
}
}
}
</script>
<script src="https://bbs.csdn.net/topics/vendor/jquery/jquery-3.2.1.min.js"></script>
<script src="https://bbs.csdn.net/topics/js/main.js"></script>
</html>
求高手解答
uj5u.com熱心網友回復:
大于0才做判斷就行了uj5u.com熱心網友回復:
不行,首先value是一個字串,其次我試過在所有的值都不等于字串0的時候判斷,但是這樣不會觸發后續的回圈。
uj5u.com熱心網友回復:
let leds = $("select[id^=LED]")
let ioas = $("select[id^=IOA]")
function check() {
let arr1 = []
leds.each(function(i) {
const val = $(this).val()
const val1 = ioas[i].value
if (val > 0 && val1 > 0) {
arr1.push(val+ '-'+val1)
}
})
let arr2 = Array.from(new Set(arr1))
if (arr1.length !== arr2.length) {
alert('error')
}
}
uj5u.com熱心網友回復:
沒你想的那么復雜。首先,把想判斷的同類值,全放到一個陣列中,然后,對陣列filter,找出所有不是0的值,假如filter結果存盤在變數arrA陣列中。然后對陣列去重,假設去重后的結果存盤于arrB中。你只需要對比arrA.length!==arrB.length。如果為true,則說明有非0的重復項,反之則沒有;或者你不去重,直接查重也行
這樣的話,就不用你那種人工一個一個的對應去判斷了。你要是來個10個,你不崩潰掉了……
uj5u.com熱心網友回復:
let leds = $("select[id^=LED]")
let ioas = $("select[id^=IOA]")
function check() {
let arr1 = []
leds.each(function(i) {
const val = $(this).val()
const val1 = ioas[i].value
if (val > 0 && val1 > 0) {
arr1.push(val+ '-'+val1)
}
})
let arr2 = Array.from(new Set(arr1))
if (arr1.length !== arr2.length) {
alert('error')
}
}
沒看你代碼,你的代碼已經把我說的寫完了。我多余一說
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/280474.html
標籤:JavaScript
