[英]How to elegantly add and remove elements from DOM
因此,我有一个动态表单,其中某些输入仅应根据用户已经输入的内容变为可用(可见)。 我开始尝试的方式有一个错误的气味。
向DOM添加材料足够简单
<script>
function addStuffToTheDOM(s1, s2){
var s1 = document.getElementById(s1);
var s2 = document.getElementById(s2);
s2.innerHTML = "";
if (s1.value==="job_1"){
s2.insertAdjacentHTML('afterend', '<p><select name="scholarship" id="scholarship"><option value="" disabled="disabled" selected="selected">*Position</option> <option value="" disabled="disabled" > </option> <option value="HR">HR</option> <option value="CTO">CTO</option> <option value="test">test</option> <option value="test2">test2</option> <option value="test3">test3</option> <option value="test4">test4</option> </select> </p> <select name="previous_experience" class="hidden"
id="new_to_demo"><option value="0" disabled="disabled" selected="selected"></option> <p> <p> <input type="text" name="supervisor" id="supervisor" maxlength="50" size="30"> <label for="supervisor">*Supervisor</label> </p> <p> <input type="text" name="office_location" id="office_location" maxlength="50" size="30"> <label for="office_location">Office location</label> </p> <p> <input type="text" name="programme_start_date" id="programme_start_date" maxlength="50" size="30"> <label for="programme_start_date">programme_start_date</label> </p>');
}
}
</script>
<!-- .... -->
<form>
<!-- ... -->
<select name="type" id="type" onchange="addStuffToTheDOM(this.id, 'alma_mater')">
<option value="" disabled="disabled" selected="selected">*Job Interest?</option>
<option value="" disabled="disabled" > </option>
<option value="job_1">The really big job</option>
<option value="job_2">The other job</option>
</select>
而且,尽管这种插入本身可能更好(而不是将巨大的字符串塞入insertAdjacentHTML()),但存在一个直接的问题,即
实现此动态内容的理想方法是什么?
是的,那有令人担忧的气味。 您可以创建一个检查功能,该功能每次有人单击/键入(取决于您要在表单中包括的内容)字段时运行。 该功能本身需要某些条件,将要检查。
这是我整理的一个简单示例。 使用jQuery(如果需要,也可以使用常规javascript),然后将类似的内容放在一起。 希望这可以帮助!
$(document).ready(function(){ $('#checkbox').click(function(){ if($("#checkbox").is(':checked')) $("#textbox").hide(); else $("#textbox").show(); }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <form> <input id="checkbox" type="checkbox">I want to hide a textbox</input><br> <input id="textbox" type="textbox" placeholder="This can be hidden"></input> </form>
编辑:要添加,如果要检查文本框值或textareas,则在jQuery中使用,例如:
$('#textbox').val();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.