【发布时间】:2017-04-11 17:45:57
【问题描述】:
我在引导程序中有一个动态表单,我想根据选择向它添加具有不同字段的表单。如果选择的选项是球体,表格应该有直径、位置、颜色和材料字段,如果是三角形,则需要添加其他字段(如图所示)。我正在尝试使用 jQuery hide() 隐藏不需要添加的字段,但它不起作用。如果您让我知道我的代码有什么问题,我将不胜感激。
html:
<div class="row" id="dynamic_form">
<div class="form-group form-horizontal">
<label class="control-label">Primitives</label>
<div class="form-inline">
<select class="input-small form-control" id="primitive-selector" name="PrimitiveChoose[]">
<!-- <option value=" " disabled="" selected="">primitive</option> -->
<option value="sphere">sphere</option>
<option value="triangle">triangle</option>
</select>
<input type="number" class="input-small form-control" id="diameter" name="Diameter[]" step="any" placeholder="diameter(D)">
<input type="text" class="input-small form-control" id="sphere-position" name="SpherePosition[]" placeholder="(x, y, z)">
<select class="input-small form-control" id="material-selector" name="MaterialSelect[]">
<option value=" " disabled="" selected="">material</option>
<option value="normal">opaque</option>
<option value="glass">glass</option>
<option value="mirror">mirror</option>
</select>
<select class="input-small form-control" id="circle-color-selector" name="CircColorSelect[]">
<option value=" " disabled="" selected="">color</option>
<option value="red">red</option>
<option value="blue">blue</option>
<option value="green">green</option>
<option value="yellow">yellow</option>
</select>
<button type="button" class="btn btn-success btn-add" id="add_more"> <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
</button>
</div>
</div>
</div>
javaScript:
function getHTMLString(formCount) {
var complex_html = [
'<div class="form-inline">',
'<select class="input-small form-control" id="primitive-selector'+ formCount +'" name="PrimitiveChoose[]">',
'<option value=" " disabled selected>primitive</option>',
'<option value="sphere">sphere</option>',
'<option value="triangle">triangle</option>',
'</select> ',
'<input type="number" class="input-small form-control" id="diameter'+ formCount +'" name="Diameter[]" step="any" placeholder="diameter(D)"> ',
'<input type="text" class="input-small form-control" id="sphere-position'+ formCount +'" name="SpherePosition[]" placeholder="(x, y, z)"> ',
'<input type="text" class="input-small form-control" id="A-position'+ formCount +'" name="VerticeAPosition[]" placeholder="(x, y, z)"> ',
'<input type="text" class="input-small form-control" id="B-position'+ formCount +'" name="VerticeBPosition[]" placeholder="(x, y, z)"> ',
'<input type="text" class="input-small form-control" id="C-position'+ formCount +'" name="VerticeCPosition[]" placeholder="(x, y, z)"> ',
'<select class="input-small form-control" id="circle-color-selector'+ formCount +'" name="CircColorSelect[]">',
'<option value=" " disabled selected>color</option>',
'<option value="red">red</option>',
'<option value="blue">blue</option>',
'<option value="green">green</option>',
'<option value="yellow">yellow</option>',
'</select> ',
'<button type="button" class="btn btn-success btn-add" id="remove_more'+formCount+'"> <span class="glyphicon glyphicon-minus" aria-hidden="true"></span>',
'</button>',
'</div>',
].join('');
return complex_html;
}
$(document).ready(function() {
var formCount = 0;
$('#add_more').on('click', function(e) {
if (formCount < 4) {
var html = getHTMLString(formCount);
var element = $(html);
$('#dynamic_form .form-group').append(html);
$('#primitive-selector'+formCount).on('change', function(){
if($(this).val() === "sphere"){
$('#A-position'+ formCount).hide();
$('#B-position'+ formCount).hide();
$('#C-position'+ formCount).hide();
} else {
$('#diameter'+ formCount).hide();
$('#sphere-position'+ formCount).hide();
}
});
} else {
return;
}
formCount++;
});
$('#dynamic_form').on("click","#remove_more"+formCount, function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').remove(); formCount--;
});
});
【问题讨论】:
标签: jquery forms twitter-bootstrap