2016-06-11 8 views
0

У меня есть четыре зависящих списка выбора, и я хочу дать всем спискам выбора значение по умолчанию/заполнитель следующим образом: select .... Проблема в том, что когда я пытаюсь сделать это вот так: <option value=""> Select ... </option> не работает. Поскольку, когда я меняю первый список выбора, другие списки выбора автоматически меняются из-за зависимости.Как установить значения по умолчанию/заполнители для зависимых списков выбора?

Это, как я заполняю мои зависели выберите Списки:

$("#slctTable").change(function() 
    { 
     $.getJSON("dropdown_code/get_fields.php?table=" + $(this).val(), success = function(data) 
     { 
       optionsFields= ""; 
     for(var i = 0; i < data.length; i++) 
      { 
       optionsFields += "<option value='" + data[i]['field_name'] + "'>" + data[i]['field_alias'] + "</option>"; 
      } 
     $("#slctField").html(""); 
     $("#slctField").append(optionsFields); 
     $("#slctField").change(); 
     }) 
    }); 
    }); 

Уит эту функцию я ставлю на optionsFields в массив:

function allValues(el) { 
    var arr = $('option', el).map(function(i, v) { 
    return this.value; 
    }).get(); 

    return arr; 
} 

ответ

1

вместо optionsFields= ""; использование optionsFields= "<option value='0'> Select... </option>". он не работает, потому что вы, вероятно, устанавливаете значение по умолчанию в HTML и перезаписываете его в своей функции изменения.

+0

Спасибо, что сработал! –

+0

Решение you'r сработало, но поскольку я работаю с массивом и 'value = ''', я получаю ошибку запроса, потому что он выполняет ''', columnName1, columnName2'. Любая идея о том, как это исправить? –

+0

если я понимаю, что вы говорите ... вам просто нужно игнорировать индекс 0 (ноль) массива выбора select. Вам не нужно использовать его ... это просто значение по умолчанию ... не полезно для приложения ... правильно? –

0

Будет здорово, если вы сможете поделиться точной скрипкой, но, глядя на ваш javascript, я вижу одну проблему.

Вместо вызова:

$("#slctTable").change(); 

Я думаю, что вы должны назвать

$("#slctTable").trigger("change"); 

, чтобы вызвать событие изменения

Кроме того, его лучше иметь строку по умолчанию, который имеет значение

<option value="">Select...</option> 

В дополнение к этому будет здорово, если вы сможете создать общую функцию, которая может создавать строки параметров из предоставленного массива, а также может добавлять параметр по умолчанию, а также в эту строку. В этом случае это уменьшит вероятность сбоя, подобно тому, как мы здесь.

Надеюсь, что это поможет.

+0

Спасибо за советы, которые я посмотрю на них, но ответ @Elmer Dantas работал. –

+0

Отлично. сообщите мне, если вы столкнетесь с любой другой проблемой. –