Javascript 如果两个select输入共享一个值,则突出显示a?

Javascript 如果两个select输入共享一个值,则突出显示a?,javascript,jquery,forms,Javascript,Jquery,Forms,我们有一个表单,它有几个唯一命名的元素;但所有这些元素共享相同的选项组,包括名称/id等。问题是,我们需要向用户发出警告,即:;如果两个选择器设置为同一选项,则为星号,或td变为背景色红色 举个简单的例子,我们可能有两个不同的选择器 <select name="ServiceName-1"> ...options.. </select> <select name="ServiceName-2"> ...options.. </select> 所

我们有一个表单,它有几个唯一命名的元素;但所有这些元素共享相同的选项组,包括名称/id等。问题是,我们需要向用户发出警告,即:;如果两个选择器设置为同一选项,则为星号,或td变为背景色红色

举个简单的例子,我们可能有两个不同的选择器

<select name="ServiceName-1">
...options..
</select>

<select name="ServiceName-2">
...options..
</select>

所有选项都共享ID和名称。简而言之,如果ServiceName-n与任何其他ServiceName-n共享选定的选项id,我们需要执行一项操作,例如更改td颜色,或使带有星号的div可见。

首先,当更改选择字段时,您需要触发一个函数。因此,将相同的onchange函数添加到两个select字段中

$('[name*="ServiceName-"]').change(function(){
 if( $('[name="ServiceName-1"]').val()==$('[name="ServiceName-2"]').val() ) {
  $('.tdClass').css('background-color','yellow');
 }
});
<select onchange="checkFields();" name="ServiceName-1">

下面是一个更具动态性的解决方案:

获取页面上的所有选择,存储并循环它们 查看有多少选择与当前选择具有相同的值 当存在多个具有相同值的对象时,更新父对象的颜色,否则,将其设置为白色。 您可以运行以下代码段来查看它的运行情况

$function{ 重复标记; }; $select.onchange,函数{ 重复标记; }; 函数标记重复{ //获取页面上的所有选择并存储一个集合 var selectedValues=$select; //循环所有选择项 selectedValues.eachfunction{ color=FFF;//为当前选择的白色设置默认背景色 var value=this.value;//存储当前选定的值 //获取与当前值匹配的所有选择 var dupes=selectedValues.filterfunction{ 返回此值。值===值; }; //如果有多个具有选定值,则我们将为td提供新颜色 如果dupes.length>1{ var color=dupes.findoption.filterfunction{ 返回此值。值===值; }.attrdata颜色;//从所选值获取值数据颜色 } //获取最接近的td并设置其背景色 dupes.closesttd.cssbackgroundColor,color; }; } td{高度:50px;宽度:50px;} 一 二 三 一 二 三 一 二 三 一 二 三
我在代码中没有看到任何td选项都共享ID:ID必须是唯一的;没有分享。改为上课。谢谢!信息量很大。我想其他人想用私刑处死我,所以我非常感谢他们的帮助。正如我所说,jQuery和Javascript甚至都不是我的专利,我以前只在后端工作过,或者在非常基本的HTML5/CSS3前端环境中工作过——所以再次感谢您的帮助。
function checkFields() {
  var sel-1 = document.getElementsByName("ServiceName-1")[0];
  var sel-2 = document.getElementsByName("ServiceName-2")[0];
  if (sel-1.value == sel-2.value) {
    alert("Error!");
    /*Since I can't see the rest of your html, you will need to create a snippet here 
      that will make the tables red or whatever.*/
  }
}