选择选项上显示jQuery动态表单

时间:2015-04-09 11:08:25

标签: javascript jquery forms onchange

我使用以下jQuery函数在选择框中选择值时显示特定表单。

<script>
$("#selectCategory").on("change", function() {
    $("#" + $(this).val()).show();
})
</script>

select选项值与表单id匹配。我面临的问题是,在第一次onchange事件中,代码工作正常。但是在随后的onchange事件中,新表单将附加到现有表单上。例如,如果我选择#xyz选项,则会呈现#xyz表单。但现在,如果我将select选项更改为#abc,则#abc表单将附加到#xyz表单。

如果用户更改了他的选择,则应删除原始表单,然后呈现新表单。例如,如果在选择#xyz选项后选择#abc选项,则应删除#xyz表单,并在其位置显示#abc表单。

<select id="selectCategory" name="category" style="width:100%;" tabindex="1">
        <option value=""></option>
        <option value="book">Textbooks/Course Material</option>
        <option value="compexam">Entrance Exam Books</option>
</select>

<form class="upload" id="book" onsubmit="return checkUpload();" action="" method="POST" enctype="multipart/form-data" style="display:none">
<form class="upload" id="compexam" onsubmit="return checkUpload();" action="" method="POST" enctype="multipart/form-data" style="display:none" >

我希望这是可以理解的!

5 个答案:

答案 0 :(得分:1)

试试这个:

<script>
$("#selectCategory").on("change", function() {
    $("form").hide();
    $("#" + $(this).val()).show();
})
</script>

首先,您需要隐藏表单,然后显示您想要的表单。

在您的情况下,您只显示表单表示每次显示一个表单并将附加到其他表单。

答案 1 :(得分:1)

你应该隐藏其他形式......

<script>
$("#selectCategory").on("change", function() {
    $("form").hide(); //Hide all forms first
    $("#" + $(this).val()).show(); //Show only what you want
})
</script>

希望这会有所帮助......

答案 2 :(得分:1)

<强>解决方案

您可以先隐藏所有其他表单,然后在事件之后仅显示特定目标表单,如下所示:

<script type="text/javascript">
    $("#selectCategory").on("change", function() {
        $("form").hide();
        $("#" + $(this).val()).show();
    });
</script>

答案 3 :(得分:0)

看看这个解决方案:

https://jsfiddle.net/g2cdygd0/

JS:

$("#selectCategory").on("change", function() {
    $('.formShownBySelect').hide();
    $("#" + $(this).val()).show();
});

HTML:

<select id="selectCategory">
     <option value="xyz">XYZ</option>
     <option value="abc">ABC</option>
</select>

<form id="xyz" class="formShownBySelect">
     <label>I'm form XYZ</label>
</form>

<form id="abc" class="formShownBySelect">
    <label>I'm form ABC</label>
</form>

CSS:

#xyz, #abc {
     display: none;
}

希望它有所帮助!

答案 4 :(得分:0)

&#13;
&#13;
$("#selectCategory").on("change", function() {
  $(".showable").hide();
  $("#" + $(this).val()).show();
})
&#13;
div {
  width: 40px;
  height: 40px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="showable" id="div1" style="background-color: #f00; display: none;"></div>
<div class="showable" id="div2" style="background-color: #0f0; display: none;"></div>
<div class="showable" id="div3" style="background-color: #00f; display: none;"></div>
<br>
<select id="selectCategory">
  <option value="">-- please choose --</option>
  <option value="div1">Red</option>
  <option value="div2">Green</option>
  <option value="div3">Blue</option>
</select>
&#13;
&#13;
&#13;