#javascript
Вопрос:
У меня есть список из шести интерфейсов в меню опций , но в будущем он может быть увеличен.Я хочу, чтобы, когда кто-то нажимает кнопку «Добавить», он показывал только список интерфейсов rest, которые ранее не были выбраны в меню опций.
$(document).ready(function() {
var maxField = 3; //Input fields increment limitation
var addButton = $('.add_button'); //Add button selector
var wrapper = $('.field_wrapper'); //Input field wrapper
var fieldHTML = '<div>'
'<select name="name[]" class="select">'
'<option value="">Select</option>'
' <option value="eth0">eth0</option> '
'<option value="eth1">eth1</option>'
'<option value="eth2">eth2</option>'
'<option value="eth3">eth3</option>'
'<option value="eth4">eth4</option>'
'<option value="eth5">eth5</option>'
'<option value="eth6">eth6</option>'
'</select>'
'<select name="name[]" class="select">'
'<option value="">Select</option>'
' <option value="eth0">eth0</option> '
'<option value="eth1">eth1</option>'
'<option value="eth2">eth2</option>'
'<option value="eth3">eth3</option>'
'<option value="eth4">eth4</option>'
'<option value="eth5">eth5</option>'
'<option value="eth6">eth6</option>'
'</select><a href="javascript:void(0);" class="remove_button">Delete</a></div>'; //New input field html
var x = 1; //Initial field counter is 1
//Once add button is clicked
$(addButton).click(function() {
//Check maximum number of input fields
if (x < maxField) {
x ; //Increment field counter
$(wrapper).append(fieldHTML); //Add field html
}
});
//Once remove button is clicked
$(wrapper).on('click', '.remove_button', function(e) {
e.preventDefault();
$(this).parent('div').remove(); //Remove field html
x--; //Decrement field counter
});
});
$('select').change(function() {
var myOpt = [];
$("select").each(function() {
myOpt.push($(this).val());
});
$("select").each(function() {
$(this).find("option").prop('hidden', false);
var sel = $(this);
$.each(myOpt, function(key, value) {
if ((value != "") amp;amp; (value != sel.val())) {
sel.find("option").filter('[value="' value '"]').prop('hidden', true);
}
});
});
});
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj 3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<div class="container" style=" padding:30px;">
<form method="post" action="dashboard.php">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="email"> Interface</label>
<select name="name[]" class="select">
<option value="">Select</option>
<option value="eth0">eth0</option>
<option value="eth1">eth1</option>
<option value="eth2">eth2</option>
<option value="eth3">eth3</option>
<option value="eth4">eth4</option>
<option value="eth5">eth5</option>
<option value="eth6">eth6</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-3">
<hr>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="field_wrapper">
<div>
<select name="name[]" class="select">
<option value="">Select Pair</option>
<option value="eth0">eth0</option>
<option value="eth1">eth1</option>
<option value="eth2">eth2</option>
<option value="eth3">eth3</option>
<option value="eth4">eth4</option>
<option value="eth5">eth5</option>
<option value="eth6">eth6</option>
</select>
<select name="name[]" class="select">
<option value="">Select Pair</option>
<option value="eth0">eth0</option>
<option value="eth1">eth1</option>
<option value="eth2">eth2</option>
<option value="eth3">eth3</option>
<option value="eth4">eth4</option>
<option value="eth5">eth5</option>
<option value="eth6">eth6</option>
</select><br>
<select name="name[]" class="select">
<option value="">Select Pair</option>
<option value="eth0">eth0</option>
<option value="eth1">eth1</option>
<option value="eth2">eth2</option>
<option value="eth3">eth3</option>
<option value="eth4">eth4</option>
<option value="eth5">eth5</option>
<option value="eth6">eth6</option>
</select>
<select name="name[]" class="select">
<option value="">Select Pair</option>
<option value="eth0">eth0</option>
<option value="eth1">eth1</option>
<option value="eth2">eth2</option>
<option value="eth3">eth3</option>
<option value="eth4">eth4</option>
<option value="eth5">eth5</option>
<option value="eth6">eth6</option>
</select>
<a href="javascript:void(0);" class="add_button" title="Add field">Add</a>
</div>
</div>
</div>
<div class="col-sm-3"></div>
<div class="col-sm-3"></div>
</div>
</form>
</div>
Я перепробовал много вещей, но ничего не вышло. Пожалуйста, помогите мне решить эту проблему.
Комментарии:
1.это не очень полезное описание проблемы , я перепробовал много вещей, но ничего не вышло. Пожалуйста, сузьте свой вопрос, указав на вашу лучшую попытку и объяснив, как она не удалась, и чего вы ожидаете вместо этого.
2. Не имеет никакого отношения к вашему вопросу, но рассмотрите возможность использования a
<button>
, а не якоря с anhref="javascript:void(0);"
. Если только этот якорь не должен привести вас на другую страницу, он должен быть кнопкой сtype="button"
.3. Спасибо, я изменю это, но теперь мне нужно, чтобы функция предотвращения дублирования работала после нажатия на ссылку добавить.
Ответ №1:
Проблема здесь в том, что ваше недавно созданное select
событие «Не назначать изменение».
Вместо
$('select').change(function() {
...
});
Попробуй
$(document).on('change', 'select', function(){
...
});
Комментарии:
1. Я пытался, но все равно это не работает