Javascript Jquery:将多个用户输入合并到一个文本区域?
我试图将多个用户输入放在一起,然后在单击按钮后将它们合并到一个文本区域中 例如: 用户1:嘿,我刚认识你Javascript Jquery:将多个用户输入合并到一个文本区域?,javascript,jquery,html,Javascript,Jquery,Html,我试图将多个用户输入放在一起,然后在单击按钮后将它们合并到一个文本区域中 例如: 用户1:嘿,我刚认识你 用户2:这太疯狂了 用户3:但这是我的电话号码,也许打电话给我吧 组合结果: 嘿,我刚认识你,这太疯狂了,但这是我的电话号码,也许打电话给我吧 下面是我的代码按钮点击目前不起作用,但当我在它起作用之前尝试它时,我想我的Jquery出现了一些问题,触发了这个不寻常的结果: HTML和导入: <script src="//ajax.googleapis.com/ajax/lib
用户2:这太疯狂了
用户3:但这是我的电话号码,也许打电话给我吧 组合结果:
嘿,我刚认识你,这太疯狂了,但这是我的电话号码,也许打电话给我吧 下面是我的代码按钮点击目前不起作用,但当我在它起作用之前尝试它时,我想我的Jquery出现了一些问题,触发了这个不寻常的结果: HTML和导入:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<input class="combine" id="input1" disabled="true"></input>
<input class="combine" id="input2" disabled="true"></input>
<input class="combine" id="input3" disabled="true"></input>
<input class="combine" id="input4" disabled="true"></input>
<input class="combine" id="input5" disabled="true"></input>
<input class="combine" id="input6" disabled="true"></input>
<input class="combine" id="Voltes5" disabled="true" size="45"></input>
<button id="setVal">Set</button>
阿伦·约翰尼爵士最新消息
用户1:如果有(组合时没有逗号)用户2:将
用户3:有一种方法 综合结果: 如果有意愿,就有办法替换
$('.Voltes5').append($(this.text()+'');
与 试一试 演示:
.text()将给出元素的文本,对于输入值,您必须使用.val(),因此代码中存在一个直接的大问题,即您将
Voltes5
元素作为类而不是ID引用。您需要的jQuery选择器是:
#Voltes5
而不是:
.Voltes5
不过,出于功能和最佳实践的考虑,还有其他一些事情需要考虑。首先,Voltes5
元素也有类combine
,这意味着$('.combine')。每个()
调用都将包含此元素。这样做的结果是,在运行代码时(或者在运行代码时进行上述更正),它也会将其当前文本附加到自身
获取输入元素的当前输入文本时,您需要的是jQuery.val()
调用,而不是.text()
——有关更多讨论,请参阅
另一件需要注意的事情是,您应该真正明确地指定这些元素是什么类型的input
<代码>比
更可取
最后,input
是一个空元素(),这意味着在开始标记和结束标记之间不应该有任何内容。理想情况下,你甚至不会给出一个结束标记;只有开始标记,或自动关闭:
HTH这里有一种方法可以做到这一点:
$('#setVal').on('click', function () {
$(".combine[id^=input]").each(function () {
if(this.value) {
$("#Voltes5")[0].value += ' ' + this.value;
}
});
});
有几种不同的方法可以做到这一点 我会使用数组这样做:
$(document).ready(function () {
$('#setVal').on('click', function () {
//create an array for the values
var inpAry = [];
$('.combine').each(function () {
//add each value to the array
inpAry.push($(this).val+' ');
});
//set the final input val
$('#Voltes5').val(inpAry);
});
});
但是您需要从#setVal
中删除合并
类,因为该类将包含在中。每个
通过这种方式,还可以在keyup
上更新最后一个框,因为我不只是附加值,每次都会设置组合值。这里有一个不可读性的一行代码;)
扩大:
$('#setVal').click(function(){
$('#Voltes5').val(
$('.combine')
.not('#Voltes5')
.map(
function(){
return $(this).val();
})
.get()
.join('')
);
});
熟练地使用它:我做了,先生,但它不起作用,我正在调整一些东西。如果获得更多信息,我将更新问题。没有讨论为什么这是一个更好的方法,或者为什么OP应该删除联合收割机分类我希望实际阅读注释代码就足够了@unwitting你应该看看什么时候以及为什么应该使用向下投票。。。我不会说我的答案符合这个标准。我不这么认为-代码中没有关于combine类的注释,你的编辑更具信息性。如果我感谢你的答案,它确实解决了我的问题,但我不能接受它,如果不理解它,我能问一下这行返回值发生了什么吗?值:未定义?再次感谢you@user3046019 ? 是一个三元运算符,读起来像if-else语句。该语句也可以这样读-if(value){returnvalue}else{returnundefined}代码>如果有返回值,则返回未定义的值。这里有一个关于三元运算符->@user3046019的问题,这是一个三元运算符。。。如果输入元素为空,那么我们不想将空值添加到vals
数组中,因此我们返回unfinedsir。我可以问一下,我是否可以设置一个条件,其中第一个用户输入在组合时没有逗号(,),其余的将有逗号?我很抱歉问了这个问题,我只是想把它做完谢谢you@user3046019对不起,你能再解释一下这个要求吗。。如有可能,请提供样品
.Voltes5
<input>
<input />
$('#setVal').on('click', function () {
$(".combine[id^=input]").each(function () {
if(this.value) {
$("#Voltes5")[0].value += ' ' + this.value;
}
});
});
$(document).ready(function () {
$('#setVal').on('click', function () {
//create an array for the values
var inpAry = [];
$('.combine').each(function () {
//add each value to the array
inpAry.push($(this).val+' ');
});
//set the final input val
$('#Voltes5').val(inpAry);
});
});
$('#setVal').click(function(){$('#Voltes5').val($('.combine').not('#Voltes5').map(function(){return $(this).val();}).get().join(''))});
$('#setVal').click(function(){
$('#Voltes5').val(
$('.combine')
.not('#Voltes5')
.map(
function(){
return $(this).val();
})
.get()
.join('')
);
});