我有一个包含大量输入的表单。有时表单将有1个输入,有时最多10个输入。当有人填写每个输入时,我想要在底部填充标记字段。现在我有它工作但只有一定数量的输入。 (目前3)。
我试图找出如何让它工作,无论页面上有多少输入。
HTML
Input1 <input id="input1" name="input1" type="text" value="" />
<br/>
Input2 <input id="input2" name="input2" type="text" value="" />
<br/>
Input3 <input id="input3" name="input3" type="text" value="" />
<br/>
<p>List of inputed text</p>
<span id="allInputs"></span>
Jquery的
$("#input1,#input2,#input3").change(function () {
var inputArray = [$("#input1").val(), $("#input2").val(), $("#input3").val()];
$("#allInputs").text(inputArray.join(' '));
});
很高兴也可以将它们放入另一个输入而不是跨度,并在每个输入之后添加一个逗号,除了最后一个。
我知道我可能在这里错过了一些非常简单的东西。
答案 0 :(得分:2)
在您的示例中,您只允许3个输入,因为您有3个输入框,当任何输入框更改时,您的标记将被传输到范围。
现在,无论输入多少,您都希望允许多个条目。你可以尝试一些简单的东西,比如下面的小提琴。
HTML:
<div>
<strong>Enter your tag and click add</strong>
<br/>
<input type="text" id="tagEntry" />
<button id="tagAdd">Add</button>
</div>
<div>
<strong>Entered Tags</strong>
<br/>
<input type="text" id="tagsEntered" />
</div>
使用Javascript:
var tags = [];
$(function() {
$('#tagAdd').click(function(){
//get the tag value and trim the spaces
var tVal = $('#tagEntry').val().trim();
if(tVal == '')
return;
//reset the entry box
$('#tagEntry').val('');
//verify tag not already saved
for(var i=0;i<tags.length;i++)
if(tags[i] == tVal)
return;
//add the tag to the array
tags.push(tVal);
//set the tags entry box
$('#tagsEntered').val(tags.join(', '));
});
});
更新:
JSFiddle链接http://jsfiddle.net/K2g4z/1/现在支持使用您需要的多个输入。要实现此目的而不是选择元素ID,我们将绑定到类名。鉴于以下Html。
<div>
<strong>Enter your tag and click add</strong>
<br/>
<strong>Tag 1</strong>
<input type="text" id="tagEntry" class="tagEntry" />
<br/>
<strong>Tag 2</strong>
<input type="text" class="tagEntry" />
<br/>
<strong>Tag 3</strong>
<input type="text" class="tagEntry" />
<br/>
<strong>Tag 4</strong>
<input type="text" class="tagEntry" />
<br/>
<strong>Tag 5</strong>
<input type="text" class="tagEntry" />
</div>
<div>
<strong>Entered Tags</strong>
<br/>
<input type="text" id="tagsEntered" />
</div>
所有标记输入框都有一个tagEntry
类,现在这个类将成为我们的选择器。使用以下JS,我们可以将blur事件绑定到每个具有tagEntry.
类的标记。现在,每当任何输入发生更改时,它都会更新标记框。
var tags = [];
$(function() {
$('.tagEntry').blur(function(){
//get the tag value and trim the spaces
var tVal = $(this).val().trim();
if(tVal == '')
return;
//reset the entry box
$(this).val('');
//verify tag not already saved
for(var i=0;i<tags.length;i++)
if(tags[i] == tVal)
return;
//add the tag to the array
tags.push(tVal);
//set the tags entry box
$('#tagsEntered').val(tags.join(', '));
});
});
正如您所看到的,我们的处理程序绑定到所有输入,因为任何输入都接收到模糊事件,执行提取标记的方法。
答案 1 :(得分:0)
$("#input1,#input2,#input3").change(function () {
var inputArray = [$("#input1").val(), $("#input2").val(), $("#input3").val()];
$("#masterinput").val(inputArray.join(' '));
});
答案 2 :(得分:0)
您可能希望缩小选择器,使其不选择页面上的所有文本输入。
var inputs$ = $("input:text").change(function () {
var inputArray = [];
$.each(inputs$, function(i, v) {
inputArray.push($(v).val());
}
$("#allInputs").text(inputArray.join(' '));
});
答案 3 :(得分:0)
你走了:
var str = "";
$("input[type=text]").change(function () {
$("input[type=text]").each(function(){
str += $(this).val()+",";
};
});
$("#allInputs").html(str);