Javascript 在这种情况下如何选择和取消选择按钮

Javascript 在这种情况下如何选择和取消选择按钮,javascript,jquery,select,button,drop-down-menu,Javascript,Jquery,Select,Button,Drop Down Menu,我为我的下拉菜单包括了一个jQuery处理程序,这样当在第一个下拉菜单中选择某个内容时,它将操作第二个下拉菜单中的选项。现在,用户要做的是在第一个下拉菜单OptionDropId中选择选项类型,然后在第二个下拉菜单NumberDropId中选择所需答案的数量。在该下拉菜单下方将出现按钮列表,用户根据在第二个下拉菜单中选择的按钮数量选择按钮数量 现在让我们假设用户单击两个按钮,然后首先更改选项类型下拉菜单,然后选择的按钮仍然处于选中状态,如果选项类型已更改,我希望取消选择按钮 这过去是有效的,但因

我为我的下拉菜单包括了一个jQuery处理程序,这样当在第一个下拉菜单中选择某个内容时,它将操作第二个下拉菜单中的选项。现在,用户要做的是在第一个下拉菜单OptionDropId中选择选项类型,然后在第二个下拉菜单NumberDropId中选择所需答案的数量。在该下拉菜单下方将出现按钮列表,用户根据在第二个下拉菜单中选择的按钮数量选择按钮数量

现在让我们假设用户单击两个按钮,然后首先更改选项类型下拉菜单,然后选择的按钮仍然处于选中状态,如果选项类型已更改,我希望取消选择按钮

这过去是有效的,但因为我已经包含了我的变更事件处理程序来绑定我的jquery,所以需要这段代码,当选项类型发生变化时,它不会取消选择按钮

我需要做什么来修复此问题:

下面是我的jquery以及选择和取消选择按钮的功能:

$(document).ready(function ()
{
    var OptDrop = new Array();

    OptDrop.abc = ["",1,2];
    OptDrop.abcd = ["",1,2,3];
    OptDrop.abcde = ["",1,2,3,4];
    OptDrop.trueorfalse = [1];
    OptDrop.yesorno = [1];

    $("#optionDropId").change(function ()
    {
        var selectedValue = $(this).val();
        $("#numberDropId").html("");
        $.each(OptDrop[selectedValue], function (x, y)
        {
            $("#numberDropId").append($("<option></option>").attr("value", y).html(y));
        });
    }); 

    $("#optionDropId").change();
});       

var currenttotal=0;
function getButtons()
{
    document.getElementById("answerA").className="answerBtnsOff";
    document.getElementById("answerB").className="answerBtnsOff";
    document.getElementById("answerC").className="answerBtnsOff";
    document.getElementById("answerD").className="answerBtnsOff";
    document.getElementById("answerE").className="answerBtnsOff";       
    document.getElementById("answerTrue").className="answerBtnsOff";
    document.getElementById("answerFalse").className="answerBtnsOff";
    document.getElementById("answerYes").className="answerBtnsOff";
    document.getElementById("answerNo").className="answerBtnsOff";

    currenttotal=0;
}

function btnclick(btn)
{
    if(document.getElementById("numberDropId").value=="")
    {
        alert('You must first select the number of answers you require from the drop down menu');
        return false;
    }
    if (btn.className=="answerBtnsOn")
    {
        btn.className="answerBtnsOff";
        currenttotal--;
        return false;
    }
    if(document.getElementById("numberDropId").value==currenttotal)
    {
        alert('You are not allowed beyond the limit of the number of answers you require, deselect other button');
        return false;
    }
    if (btn.className=="answerBtnsOff")
    {
        btn.className="answerBtnsOn";
        currenttotal++;
        return false;
    }

}
Html代码如下:

<form id="enter" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" onsubmit="return validateForm(this);">
  <table id="optionAndAnswer">
    <tr>
      <th colspan="2">
        Option and Answer
      </th>
    </tr>
    <tr>
      <td>Option Type:</td> 
      <td>
        <select name="optionDrop" id="optionDropId" onChange="getDropDown()">
          <option value="">Please Select</option>
          <option value="abc">ABC</option>
          <option value="abcd">ABCD</option>
          <option value="abcde">ABCDE</option>
          <option value="trueorfalse">True or False</option>
          <option value="yesorno">Yes or No</option>
        </select>
      </td>
   </tr>
   <tr>
     <td>Number of Answers:</td>
     <td>
       <select name="numberDrop" id="numberDropId" onChange="getButtons()">
       </select>
     </td>
   </tr>
   <tr>
     <td>Answer</td>
     <td>
       <input class="answerBtns" name="answerAName" id="answerA" type="button" value="A" onclick="javascript:btnclick(this);"/>
       <input class="answerBtns" name="answerBName" id="answerB" type="button"   value="B" onclick="javascript:btnclick(this);"/>
       <input class="answerBtns" name="answerCName" id="answerC" type="button"   value="C" onclick="javascript:btnclick(this);"/>
       <input class="answerBtns" name="answerDName" id="answerD" type="button"      value="D" onclick="javascript:btnclick(this);"/>
       <input class="answerBtns" name="answerEName" id="answerE" type="button"   value="E" onclick="javascript:btnclick(this);"/>
       <input class="answerBtns" name="answerTrueName" id="answerTrue" type="button"    value="True" onclick="javascript:btnclick(this);"/>
       <input class="answerBtns" name="answerFalseName" id="answerFalse" type="button"   value="False" onclick="javascript:btnclick(this);"/>
       <input class="answerBtns" name="answerYesName" id="answerYes" type="button"   value="Yes" onclick="javascript:btnclick(this);"/>
       <input class="answerBtns" name="answerNoName" id="answerNo"      type="button" value="No" onclick="javascript:btnclick(this);"/>
     </td>
    </tr>
  </table>
</form>

您只需使用Jquery的.removeatr函数,如下所述:

然后您的更改函数将如下所示:

$("#optionDropId").change(function ()
    {
        var selectedValue = $(this).val();
        $("#numberDropId").html("");
        $.each(OptDrop[selectedValue], function (x, y)
        {
            $("#numberDropId").append($("<option></option>").attr("value", y).html(y));
        });
        $("#numberDropId").removeAttr("selected");
    }); 

可能最好使用取消选择一个选中的选项,因为选中和选中的单选和复选框类型输入是一个属性,而不是一个属性。嗨,我尝试使用removeAttr和prop方法,但它们都不起作用,仍然存在相同的问题,我尝试使用numberDropId,但因为问题是OptionDropId,因为当下拉选项更改时,按钮不会取消选择,但仍然不起作用