我正在做一个关于数据映射的项目。实现了几项检查:
我赞成现在选择专栏的那一部分。我把这些不同的选择放在一个数组里。问题是,如果我想删除数组中的一个选项,所有的数据都会被删除!我正在使用这个插件:http://wenzhixin.net.cn/p/multiple-select/docs/
var choiceFields = [];
$('#selectFields').multipleSelect({
filter: true,
onClick: function(view)
{
choiceFields.push(view.value);
var length = choiceFields.length-1;
if(view.checked === false)
{
choiceFields.splice(view.value);
}
console.log(choiceFields);
}
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.css" rel="stylesheet"/>
<script src="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.js"></script>
<div class="select-box">
<label for="selectFields"><span class="label-FieldChoice">Choice fields</span> </label>
<select id="selectFields" multiple="multiple" style="display: none;">
<option value="id">id</option>
<option value="username">username</option>
<option value="username_canonical">username_canonical</option>
<option value="email">email</option>
<option value="email_canonical">email_canonical</option>
<option value="enabled">enabled</option>
<option value="salt">salt</option>
<option value="password">password</option>
<option value="last_login">last_login</option>
<option value="confirmation_token">confirmation_token</option>
<option value="password_requested_at">password_requested_at</option>
<option value="roles">roles</option>
<option value="lastName">lastName</option>
<option value="firstName">firstName</option>
</select>
</div>
发布于 2018-10-15 06:15:29
你可以这样做:
var choiceFields = [];
$('#selectFields').multipleSelect({
filter: true,
onClick: function(view) {
choiceFields.push(view.value);
var length = choiceFields.length - 1;
if (view.checked === false) {
choiceFields = jQuery.grep(choiceFields, function(value) {
return value != view.value;
});
}
console.log(choiceFields);
}
});我变了:
choiceFields.splice(view.value);至:
choiceFields = jQuery.grep(choiceFields, function(value) {
return value != view.value;
});Demo
var choiceFields = [];
$('#selectFields').multipleSelect({
filter: true,
onClick: function(view) {
choiceFields.push(view.value);
var length = choiceFields.length - 1;
if (view.checked === false) {
choiceFields = jQuery.grep(choiceFields, function(value) {
return value != view.value;
});
}
console.log(choiceFields);
}
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.css" rel="stylesheet" />
<script src="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.js"></script>
<div class="select-box">
<label for="selectFields"><span class="label-FieldChoice">Choice fields</span> </label>
<select id="selectFields" multiple="multiple" style="display: none;">
<option value="id">id</option>
<option value="username">username</option>
<option value="username_canonical">username_canonical</option>
<option value="email">email</option>
<option value="email_canonical">email_canonical</option>
<option value="enabled">enabled</option>
<option value="salt">salt</option>
<option value="password">password</option>
<option value="last_login">last_login</option>
<option value="confirmation_token">confirmation_token</option>
<option value="password_requested_at">password_requested_at</option>
<option value="roles">roles</option>
<option value="lastName">lastName</option>
<option value="firstName">firstName</option>
</select>
</div>
发布于 2018-10-15 06:20:16
在Array.splice()中,它需要3个参数array.splice(index, howMany, [element1][, ..., elementN])。
开始更改数组的索引−索引。
howMany−表示要删除的旧数组元素数的整数。如果howMany为0,则不会删除任何元素。
element1,.,elementN−要添加到数组中的元素。如果不指定任何元素,splice只需从数组中删除这些元素。
但您没有在回答中提供howMany参数,请提供此值以从数组中删除特定索引
前-
var choiceFields = [];
$('#selectFields').multipleSelect({
filter: true,
onClick: function(view)
{
var length = choiceFields.length-1;
if(view.checked === false)
{
var index = choiceFields.indexOf(view.value); // Finding Index of Item
choiceFields.splice(index,1); // Splicing one element from index
}
else{
choiceFields.push(view.value); // if false we do not push value
}
console.log(choiceFields);
},
onCheckAll: function()
{
choiceFields = []; // delete all previous values
var options = document.getElementById('selectFields');
for(var i=0;i<options.length;i++){
choiceFields.push(options[i].text);
}
console.log(choiceFields);
}
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.css" rel="stylesheet"/>
<script src="https://rawgit.com/wenzhixin/multiple-select/master/multiple-select.js"></script>
<div class="select-box">
<label for="selectFields"><span class="label-FieldChoice">Choice fields</span> </label>
<select id="selectFields" multiple="multiple" style="display: none;">
<option value="id">id</option>
<option value="username">username</option>
<option value="username_canonical">username_canonical</option>
<option value="email">email</option>
<option value="email_canonical">email_canonical</option>
<option value="enabled">enabled</option>
<option value="salt">salt</option>
<option value="password">password</option>
<option value="last_login">last_login</option>
<option value="confirmation_token">confirmation_token</option>
<option value="password_requested_at">password_requested_at</option>
<option value="roles">roles</option>
<option value="lastName">lastName</option>
<option value="firstName">firstName</option>
</select>
</div>
https://stackoverflow.com/questions/52810658
复制相似问题