jquery - 如何比较和验证每个位置的每个选定字符是否不同?
问题描述
如何比较和验证每个位置的每个选定字符是否不同?
每个按钮有 5 种可能性(否、A、B、C、D)。
如何验证 A、B、C、D 是否已被使用。知道“否”可以放置两次或更多次。
我的代码只工作一次,我认为太复杂了。你有最好的解决方案吗?
<select id="button01" name="button01">
<option value="No">No</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
<select id="button02" name="button02">
<option value="No">No</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
<select id="button03" name="button03">
<option value="No">No</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
<select id="button04" name="button04">
<option value="No">No</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
<select id="button05" name="button05">
<option value="No">No</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
<script>
$(function() {
$("FORM#editor").on("change", function(mobile_bt) {
// data
var valid = false;
var button01 = $("#button01", this);
var button02 = $("#button02", this);
var button03 = $("#button03", this);
var button04 = $("#button04", this);
var button05 = $("#button05", this);
// compare
if (button01.val()!= 'No') {
valid = (button01.val() == button02.val() || button01.val() == button03.val() || button01.val() == button04.val() || button01.val() == button05.val() ? false : true);
}
if (button02.val()!= 'No') {
valid = (button02.val() == button01.val() || button02.val() == button03.val() || button02.val() == button04.val() || button02.val() == button05.val() ? false : true);
}
if (button03.val()!= 'No') {
valid = (button03.val() == button01.val() || button03.val() == button02.val() || button03.val() == button04.val() || button03.val() == button05.val() ? false : true);
}
if (button04.val()!= 'No') {
valid = (button04.val() == button01.val() || button04.val() == button02.val() || button04.val() == button03.val() || button04.val() == button05.val() ? false : true);
}
if (button05.val()!= 'No') {
valid = (button05.val() == button01.val() || button05.val() == button02.val() || button05.val() == button03.val() && button05.val() == button04.val() ? false : true);
}
// Alert
if ( !valid ) {
// Stop
mobile_bt.preventDefault();
// display alert
alert("Warning! 2 or more buttons are assigned to the same location. Please change your choice.");
// Focus back
$("#button01").focus();
}
});
});
</script>
解决方案
这应该工作
$("select[id^='button']").on("change", function(mobile_bt) {
var fullList = $("select[id^='button']").map(function() { return $(this).val() }).get()
uniqueList = fullList.filter(function(item, index) {
return (item == 'No') ? item : fullList.indexOf(item) >= index;
});
if(fullList.length != uniqueList.length){
Your code here...
}
});
(步骤 1)将所有值映射到一个数组。
(步骤 2)如果值不是“否”,则过滤重复项。
(步骤 3)比较两个数组长度以确定是否存在重复。
推荐阅读
- reactjs - 创建自定义返回类型 React Typescript
- javascript - 如何使用 AXIOS 发布到 reactJS 中的 .php url 端点?
- azure - 如何使用 Azure Devops 将 azure GIT repos 文件从一个文件夹移动到另一个文件夹
- sqlite - 如何使用 STRFTIME 计算两个日期之间的差异,给出时间长度?
- javascript - Framer-motion:未在子元素上调用 onAnimation 回调
- javascript - 如果不满足值,如何停止计时器并检查值继续,否则停止计时器并做某事
- python - 我似乎无法在 Python 中更新数据框中的样式
- spring - 冬眠和春天的坚持
- opengl - OpenGL:如何以 10 位(或 12 位或 16 位)通道深度颜色渲染三角形网格?
- matlab - 不确定如何处理错误消息“无法从单元格转换为双精度”。