Добрый день!
Имеется select и поле input
<div id="alt_contact_div">
<div class="alt_contact">
<select name="alt_contact_sel" class="alt_contact_sel">
<option value="0">—Выбрать—</option>
<option value="1">Skype</option>
<option value="2">ICQ</option>
<option value="3">Mail.ru Агент</option>
<option value="4">Вконтакте</option>
<option value="5">Twitter</option>
<option value="6">Facebook</option>
<option value="7">Google+</option>
<option value="8">LinkedIn</option>
<option value="9">Github</option>
</select>
<input size="30" name = "site" class="input_alt_contact1" value="адрес или номер аккаунта" disabled = "disabled" type="text" maxlength="255" />
</div>
</div>
<a href="javascript:void(0);" id="add_link" class="link" title="Добавить ссылку">+ Добавить ссылку</a>
С помощью JS динамически создаю аналогичные select и input по нажатию на ссылку
$("#add_link").live("click", function(e){
// тут функция добавления новых select и input. Количество добавляемых полей ограничено до 9-ти.
});
var arr = []; // создаем пустой массив для записи ранее выбранных значений select
$(".alt_contact_sel").live("change", function(e){
var contact_sel = $(this).val();
if($(this).val()==0) // если значение равно 0, то блокируем input и меняем val
{
$(this).next().val("адрес или номер аккаунта");
$(this).next().attr("disabled","disabled");
}
else // иначе
{
var pos = $.inArray (contact_sel, arr); // ищем выбранное значение в массиве arr
if(pos>=0) // если оно есть, то выводим ошибку
{
alert("Данный алтернативный источник уже выбран");
}
else //если нет, то
{
arr.push(contact_sel); // добавляем в массив новое значение
}
$(this).next().removeAttr("disabled"); // разблокируем input
}
});
Такой способ не решает мою задачу. При повторном выборе одного и того же select получается так, что скрипт добавляет и добавляет значения в массив, и если я снова выберу значение которое выбирал раньше этим же select, появляется моя ошибка (alert), хотя у других select это значение не выбрано.
Вопрос к знатокам. Как определить, что в разных select выбраны одинаковые значения, например, я в первом select выбрал Skype, во втором ICQ, в третьем хочу снова выбрать Skype, и тут должна выходить ошибка, что нельзя такой выбирать?