2010-01-02 2 views
0

Я динамически заполняю DropDown с помощью AJAX. Код DropDown выглядит следующим образом:Извлечение значения (не отображаемый элемент) DropDown

<select class="element select medium" id="inDistrict" name="inDistrict" onclick="MakeRequest('divDistrict', 'inDistrict', 'SELECT * FROM districtmaster');" onchange="alert(document.getElementByID('inDistrict').value);"> 
    <option value="Select" selected="Select">Select</option> 
</select> 

Другой файл, который выполняет по запросу AJAX содержит следующий код:

<?php 
    require("dbconnection.php"); 
    require("dbaccess.php"); 

    $dropdownControlName = $_GET['DropDownControlName']; 
    $query = $_GET['SqlQuery']; 
    dbconnection::OpenConnection(); 
    $result = dbaccess::GetRows($query); 
?> 
<select name="<?php echo $dropdownControlName; ?>"> 
<option>Select from the list</option> 
<?php while($row=mysql_fetch_array($result)) 
{ ?> 
    <option value="<?= $row[0] ?>"><?= $row[1] ?></option> 
<?php } ?> 
</select> 

Все работает отлично и выпадающие также заполняться, за исключением того, что я не после, как выберите значение Option. В приведенном выше коде вы можете видеть, что я использую строку [0] как значение и строку [1] в качестве элемента отображения. Я хочу выбрать значение строки [0], когда пользователь выбирает элемент отображения строки [1].

В первом коде выше вы можете увидеть, что я добавил событие onchange, и есть только окно предупреждения. Но это не выполняется. Как выбрать значение [0] и почему событие onchange не срабатывает?

ответ

2

onchange не срабатывает в ответ на DOM-манипулирование выбранным значением. Вы можете запустить его вручную с помощью некоторых простых JavaScript:

var inDistrict = document.getElementById('inDistrict'); 
if (inDistrict.onchange) 
    inDistrict.onchange(); 

Если вы используете JQuery, это еще проще:

$('#inDistrict').change(); 

Так это выглядит, как вы заменяете весь DropDownList с вашим запросом АЯКС , просто бросьте часть этого javascript там, чтобы запустить событие изменения, когда это сделано, и вам должно быть хорошо идти.

+0

И как выбрать строку [0], то есть значение отображаемого элемента? – RKh

+1

Это только свойство «значение» выбранного параметра. 'mydropdown.options [mydropdown.selectedIndex] .value' – womp

2

Неправильное использование случай в вашей onchage строке события:

document.getElementByID 

Правильно:

document.getElementById 

Примечание, что вместо использования выше; Вы можете предупредить выпадающее значение, как это тоже:

onchange="alert(this.value);" 

Тогда для выпадающего списка:

Если добавить [] к именам элементов, они становятся массив, например:

<select name="myselect[]"> 

Теперь с php вы можете получить доступ к каждому из своих элементов следующим образом: (при условии, что вы отправляете метод в форме)

echo $_POST['myselect'][0]; // this prints first item value 
echo $_POST['myselect'][1]; // this prints second item value 
echo $_POST['myselect'][2]; // this prints third item value 
//and so on... 
+0

На самом деле я правильно написал в своем исходном файле, редактируя сообщение, которое он мог бы изменить. Пожалуйста, игнорируйте. – RKh

+0

Когда DropDown заполняется динамически, называя его как массив, как получить размер массива? – RKh

+1

Я только что привел пример, вы можете использовать ajax для этого, а также отправить обратно его размер, отправив его обратно в ответ ajax. как считать count ($ _ POST ['myselect']) – Sarfraz

Смежные вопросы