我有这3个下拉菜单,多个复选框和文本框,我需要在textarea框中填充替代值,我需要做的是按顺序显示所有,用逗号分隔这样的...
4300013076,10,563,2,6532
基本上发生了什么,它取代了最后选择的数字。我甚至不能把如何添加复选框和文本框放在一起,我真的很新,可以使用一些帮助。
$(document).ready(function() {
$('#element_45').change(function() {
var myValue = $(this).val();
switch (myValue) {
case '6':
$('textarea[id="element_247"]').val('4300013076');
break;
case '12':
$('textarea[id="element_247"]').val('4300013077');
break;
case '13':
$('textarea[id="element_247"]').val('4300013078');
break;
case '14':
$('textarea[id="element_247"]').val('4300013492');
break;
}
});
});
$(document).ready(function() {
$('#element_46').change(function() {
var myValue = $(this).val();
switch (myValue) {
case '20':
$('textarea[id="element_247"]').val('10');
break;
case '21':
$('textarea[id="element_247"]').val('14');
break;
case '22':
$('textarea[id="element_247"]').val('17');
break;
case '23':
$('textarea[id="element_247"]').val('18');
break;
}
});
});
$(document).ready(function() {
$('#element_47').change(function() {
var myValue = $(this).val();
switch (myValue) {
case '30':
$('textarea[id="element_247"]').val('561');
break;
case '31':
$('textarea[id="element_247"]').val('562');
break;
case '32':
$('textarea[id="element_247"]').val('563');
break;
case '33':
$('textarea[id="element_247"]').val('564');
break;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="element_45">
<option value="" >None</option>
<option value="6">text1</option>
<option value="12">text2</option>
<option value="13">text3</option>
<option value="14">text4</option>
</select>
<select id="element_46">
<option value="" >None</option>
<option value="20">text5</option>
<option value="21">text6</option>
<option value="22">text7</option>
<option value="23">text8</option>
</select>
<select id="element_47">
<option value="" >None</option>
<option value="30">text9</option>
<option value="31">text10</option>
<option value="32">text11</option>
<option value="33">text12</option>
</select>
<input id="element_490" name="element_490" class="element text medium" value=""/>
<input id="element_227_1" name="element_227_1" class="element checkbox" type="checkbox" value="1" />
<label class="choice" for="element_227_1">Yes</label>
<textarea id="element_247"></textarea>
答案 0 :(得分:0)
这是一个潜在的解决方案,它将所需数据存储在每个data-val
对象的select
属性中,然后调用一个更新函数来抓取所有现有的data-val
属性,将它们放入数组,并将它们连接到文本框中。
$(document).ready(function() {
$('#element_45').change(function() {
var myValue = $(this).val();
switch (myValue) {
case '6':
$(this).attr('data-val','4300013076');
break;
case '12':
$(this).attr('data-val','4300013077');
break;
case '13':
$(this).attr('data-val','4300013078');
break;
case '14':
$(this).attr('data-val','4300013492');
break;
}
update();
});
$('#element_46').change(function() {
var myValue = $(this).val();
switch (myValue) {
case '20':
$(this).attr('data-val', '10');
break;
case '21':
$(this).attr('data-val', '14');
break;
case '22':
$(this).attr('data-val', '17');
break;
case '23':
$(this).attr('data-val', '18');
break;
}
update();
});
$('#element_47').change(function() {
var myValue = $(this).val();
switch (myValue) {
case '30':
$(this).attr('data-val', '561');
break;
case '31':
$(this).attr('data-val', '562');
break;
case '32':
$(this).attr('data-val', '563');
break;
case '33':
$(this).attr('data-val', '564');
break;
}
update();
});
function update() {
var allSelects = [];
$('select').each(function() {
if ($(this).attr('data-val'))
allSelects.push($(this).attr('data-val'));
})
$('textarea[id="element_247"]').val(allSelects.join(', '));
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="element_45">
<option value="" >None</option>
<option value="6">text1</option>
<option value="12">text2</option>
<option value="13">text3</option>
<option value="14">text4</option>
</select>
<select id="element_46">
<option value="" >None</option>
<option value="20">text5</option>
<option value="21">text6</option>
<option value="22">text7</option>
<option value="23">text8</option>
</select>
<select id="element_47">
<option value="" >None</option>
<option value="30">text9</option>
<option value="31">text10</option>
<option value="32">text11</option>
<option value="33">text12</option>
</select>
<textarea id="element_247"></textarea>
答案 1 :(得分:0)
选择select
,创建翻译对象并收听所有选择框更改。然后,每次更改时,读取所有选择框,并将值收集到一个数组中。这样你就可以使用Array#join
来定义&#34; glue&#34;。
我使用Array#reduce
生成集合值数组。
$(document).ready(function() {
// collect selectboxes - respecting the order
const selectBoxes = [
$( '#element_45' ),
$( '#element_46' ),
$( '#element_47' ),
];
const textbox = $( 'textarea#element_247' );
// translate values
const translateValues = {
// possible #element_45 values
'45': {
'6': '4300013076',
'12': '4300013077',
'13': '4300013078',
'14': '4300013492',
},
// possible #element_46 values
'46': {
'20': '10',
'21': '14',
'22': '17',
'23': '18',
},
// possible #element_47 values
'47': {
'30': '561',
'31': '562',
'32': '563',
'33': '564',
},
};
// Listen to all select changes
$( 'select' ).change( function() {
const values = selectBoxes.reduce( ( collectedValues, box ) => {
// Convert value to number
const val = box.val();
// Skip empty boxes
if ( val == 0 ) {
return collectedValues;
}
// Get id of box
const id = box.attr( 'id' ).split( '_' )[ 1 ];
// Get value and add to collection
const t = translateValues[ id ][ val ];
// Only add value, when it is defined in our object
if ( t ) {
collectedValues.push( t );
}
return collectedValues;
}, [] );
// Set textarea value
textbox.val( values.join( ', ' ) );
} );
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="element_45">
<option value="" >None</option>
<option value="6">text1</option>
<option value="12">text2</option>
<option value="13">text3</option>
<option value="14">text4</option>
</select>
<select id="element_46">
<option value="" >None</option>
<option value="20">text5</option>
<option value="21">text6</option>
<option value="22">text7</option>
<option value="23">text8</option>
</select>
<select id="element_47">
<option value="" >None</option>
<option value="30">text9</option>
<option value="31">text10</option>
<option value="32">text11</option>
<option value="33">text12</option>
</select>
<textarea id="element_247"></textarea>
&#13;
答案 2 :(得分:0)
类似的解决方案,但使用字符串文字:
$(document).ready(function () {
var value45 = '', value46 = '', value47 = '';
var textArea = $('textarea[id="element_247"]');
$('#element_45').change(function () {
var myValue = $(this).val();
switch (myValue) {
case '6':
value45 = '4300013076';
break;
case '12':
value45 = '4300013077';
break;
case '13':
value45 = '4300013078';
break;
case '14':
value45 = '4300013492';
break;
}
textArea.val(`${value45}, ${value46}, ${value47}`);
});
$('#element_46').change(function () {
var myValue = $(this).val();
switch (myValue) {
case '20':
value46 = '10';
break;
case '21':
value46 = '14';
break;
case '22':
value46 = '17';
break;
case '23':
value46 = '18';
break;
}
textArea.val(`${value45}, ${value46}, ${value47}`);
});
$('#element_47').change(function () {
var myValue = $(this).val();
switch (myValue) {
case '30':
value47 = '561';
break;
case '31':
value47 = '562';
break;
case '32':
value47 = '563';
break;
case '33':
value47 = '564';
break;
}
textArea.val(`${value45}, ${value46}, ${value47}`);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="element_45">
<option value="" >None</option>
<option value="6">text1</option>
<option value="12">text2</option>
<option value="13">text3</option>
<option value="14">text4</option>
</select>
<select id="element_46">
<option value="" >None</option>
<option value="20">text5</option>
<option value="21">text6</option>
<option value="22">text7</option>
<option value="23">text8</option>
</select>
<select id="element_47">
<option value="" >None</option>
<option value="30">text9</option>
<option value="31">text10</option>
<option value="32">text11</option>
<option value="33">text12</option>
</select>
<textarea id="element_247"></textarea>