简体   繁体   English

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

[英]How to select and unselect buttons in this situation

I included a jQuery handler for my dropdown menus so that when something is selected in the first dropdown menu, it will manipulate the options in the second dropdown menu. 我为下拉菜单包含了一个jQuery处理程序,以便在第一个下拉菜单中选择某些内容时,它将处理第二个下拉菜单中的选项。 Now what the user does is pick the option type in the first dropdown ( OptionDropId ) menu and then in the second dropdown ( NumberDropId ) menu the user selects the number of answers wanted. 现在,用户要做的是在第一个下拉菜单( OptionDropId )菜单中选择选项类型,然后在第二个下拉菜单( NumberDropId )菜单中选择所需的答案数量。 Below that dropdown menu a list of buttons would appear and the user selects the number of buttons depending on how many the user has selected in the second dropdown menu. 在该下拉菜单下面,将显示一个按钮列表,用户根据用户在第二个下拉菜单中选择的数量来选择按钮的数量。

Now let's say user clicks on two buttons and then changes the option type (first dropdown menu), then the buttons selected are still selected, I want the buttons to be unselected if the option type has changed. 现在,假设用户单击两个按钮,然后更改选项类型(第一个下拉菜单),然后仍选择了选择的按钮,如果选项类型已更改,我希望取消选择按钮。

This used to work but since I have included my change event handler to bind my jquery (this code is needed), it does not unselect buttons when the option type changes. 这曾经可以工作,但是由于我包含了change事件处理程序以绑定我的jquery(需要此代码),因此当选项类型更改时,它不会取消选择按钮。

What do I need to do to fix this: 我需要做些什么来解决此问题:

Below is my jquery and function of select and unselect buttons: 下面是我的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 code is below: 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>

You can just use Jquery's .removeAtrr() function as described here: Best way to unselect a <select> in jQuery? 您可以按如下所述使用Jquery的.removeAtrr()函数: 在jQuery中取消选择<select>的最佳方法?

Then your change function would look like this: 然后,您的更改功能将如下所示:

$("#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");
    }); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM