我在表单中有一个选择字段,允许您选择多个选项。
我需要为所选的每个选项自动创建一个新的输入文本框。
例如,如果在选择框中选择选项,则会在其下方显示一个输入。如果选择5,则会在其下方显示5个输入。
我不确定这是否可以直接用Javascript完成,或者我是否需要使用jQuery或其他形式的AJAX来完成这项工作,但我不确定如何处理这个问题(我对使用AJAX相对较新)
答案 0 :(得分:1)
只是一些快速的想法.. 在选择元素下添加DIV。
使用jQuery(或javascript),您可以为每个选择项添加一个文本框,为div添加一个文本框。类似的东西:
var textboxString;
$("#SelectElement option:selected").each(function () {
textboxString += "<input type='textbox' /><br>" // Add to this string as needed (Labels, css class, etx).
});
$("#divElement").html(textboxString)
答案 1 :(得分:1)
嗯,jQuery只针对这类事情 - 我建议用它来避免头痛。
我接受它。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(function()
{
$('#test')
.after( '<div id="option-inputs"></div>' )
.find( 'option' ).each( function()
{
var $option = $(this);
$option
.data( '$input', $( '<span>' + $option.text() + ': </span><input><br>').appendTo( '#option-inputs' ).hide() )
.bind( 'toggle-input', function()
{
var $input = $option.data( '$input' );
if ( $option[0].selected )
{
$input.show();
} else {
$input.hide();
}
})
.bind( 'click', function()
{
$(this).siblings().andSelf().trigger( 'toggle-input' );
})
.trigger( 'toggle-input' )
;
})
;
});
</script>
</head>
<body>
<select id="test" multiple="multiple">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</body>
</html>
答案 2 :(得分:0)
用这样的html:
<select id="number_of_inputs">
<option>1</option>
<option>2</option>
<option>3</option>
<option>3</option>
<option>5</option>
</select>
<div id="inputs"></div>
你可以使用这个jQuery:
$("#number_of_inputs").change(function() {
var num = parseInt($(this).val());
$("#inputs").html("");
for(var i = 0; i < num; i++) {
$("#inputs").append("<input type='text' /><br />");
}
});
我实际上更喜欢gw的JS,但这是另一种方法。