jQuery select 选项上的动态表单显示
jQuery dynamic form display on select option
我正在使用以下 jQuery 函数在 select 框中显示 selection 值的特定形式。
<script>
$("#selectCategory").on("change", function() {
$("#" + $(this).val()).show();
})
</script>
select 选项值与表单 ID 匹配。我面临的问题是,在第一个 onchange 事件中,代码运行正常。但是在后续的 onchange 事件中,新表单会附加到现有表单上。例如,如果我 select #xyz 选项,则呈现 #xyz 表单。但是现在,如果我将 select 选项更改为 #abc,#abc 形式将附加到 #xyz 形式。
如果用户更改了他的 selection,则应删除原始表单,然后呈现新表单。例如,如果我在选择#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" >
我希望这是可以理解的!
试试这个:
<script>
$("#selectCategory").on("change", function() {
$("form").hide();
$("#" + $(this).val()).show();
})
</script>
首先你需要隐藏表格,然后显示你想要的表格。
在你的情况下,你只显示表格意味着每次显示一个表格并将附加到其他表格。
那你应该隐藏其他表格...
<script>
$("#selectCategory").on("change", function() {
$("form").hide(); //Hide all forms first
$("#" + $(this).val()).show(); //Show only what you want
})
</script>
希望这对您有所帮助...
解决方案
您可以先隐藏所有其他表单,然后在事件发生后仅显示特定的目标表单,如下所示:
<script type="text/javascript">
$("#selectCategory").on("change", function() {
$("form").hide();
$("#" + $(this).val()).show();
});
</script>
看看这个解决方案:
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;
}
希望对您有所帮助!
$("#selectCategory").on("change", function() {
$(".showable").hide();
$("#" + $(this).val()).show();
})
div {
width: 40px;
height: 40px;
}
<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>
我正在使用以下 jQuery 函数在 select 框中显示 selection 值的特定形式。
<script>
$("#selectCategory").on("change", function() {
$("#" + $(this).val()).show();
})
</script>
select 选项值与表单 ID 匹配。我面临的问题是,在第一个 onchange 事件中,代码运行正常。但是在后续的 onchange 事件中,新表单会附加到现有表单上。例如,如果我 select #xyz 选项,则呈现 #xyz 表单。但是现在,如果我将 select 选项更改为 #abc,#abc 形式将附加到 #xyz 形式。
如果用户更改了他的 selection,则应删除原始表单,然后呈现新表单。例如,如果我在选择#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" >
我希望这是可以理解的!
试试这个:
<script>
$("#selectCategory").on("change", function() {
$("form").hide();
$("#" + $(this).val()).show();
})
</script>
首先你需要隐藏表格,然后显示你想要的表格。
在你的情况下,你只显示表格意味着每次显示一个表格并将附加到其他表格。
那你应该隐藏其他表格...
<script>
$("#selectCategory").on("change", function() {
$("form").hide(); //Hide all forms first
$("#" + $(this).val()).show(); //Show only what you want
})
</script>
希望这对您有所帮助...
解决方案
您可以先隐藏所有其他表单,然后在事件发生后仅显示特定的目标表单,如下所示:
<script type="text/javascript">
$("#selectCategory").on("change", function() {
$("form").hide();
$("#" + $(this).val()).show();
});
</script>
看看这个解决方案:
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;
}
希望对您有所帮助!
$("#selectCategory").on("change", function() {
$(".showable").hide();
$("#" + $(this).val()).show();
})
div {
width: 40px;
height: 40px;
}
<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>