Как получить выбранное значение из выпадающего списка в asp.net, используя JavaScript? - PullRequest
5 голосов
/ 09 марта 2010

Я заполняю раскрывающийся список стран из базы данных. Мне нужно выбрать значение из раскрывающегося списка и назначить его в текстовое поле с помощью JavaScript.

Код:

var textboxId = document.getElementById("txtCountry");
var dropdownListId =document.getElementById("ddlLocation"); 

var e = document.getElementById("ddlLocation"); 
var strUser = e.options[e.selectedIndex].value;

document.getElementById(textboxId).value = strUser;    
document.getElementById(textboxId).focus(); 

, делая это, я получаю ошибку. Любые решения?

С уважением Рави

Ответы [ 3 ]

9 голосов
/ 09 марта 2010

Ваш код неверен, посмотрите, где я внес изменения в тот же код:

var textboxId = document.getElementById("txtCountry");
var e = document.getElementById("ddlLocation"); 
var strUser = e.options[e.selectedIndex].value;
textboxId.value = strUser;    
textboxId.focus(); 

Что вы сделали, вы выбрали текстовое поле, и JS вернул вам элемент DOM этого текстового поля, и вы хотели заполнить его, передав DOM textBox внутри функции getElementById().

Вот где это сломалось:

document.getElementById(textboxId).value = strUser;

Чтобы использовать метод getElementById(), вы передаете строковое значение id элемента.

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

2 голосов
/ 09 марта 2010

Попробуйте с:

document.getElementById('<%=txtCountry.ClientID%>').value

или

var textBox = document.getElementById('<%=txtCountry.ClientID%>');
textBox.value = strUser;

Это потому, что идентификаторы HTML-элементов в сгенерированных документах не совпадают с идентификатором, который вы присвоили в своем коде. Чтобы получить идентификатор, назначенный вашему элементу управления в html, вы можете использовать свойство ClientID раскрывающегося списка.

Другая проблема заключается в том, что вы присваиваете переменную yourhtml переменной, а затем используете функцию getElementById, которая не является допустимым вызовом.

Это изменено в ASP.NET 4, который скоро будет выпущен.

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

0 голосов
/ 09 марта 2010

Эти две строки:

document.getElementById(textboxId).value = strUser;    
document.getElementById(textboxId).focus(); 

тоже не правы. Если ваша предыдущая строка действительно сработала:

var textboxId = document.getElementById("txtCountry");

тогда то, что вы назвали textboxId , фактически будет элементом управления textbox, поэтому вы будете делать getElementById , используя элемент управления вместо строкового идентификатора.

Чтобы следовать сказанному @ anthares ; попробуйте это:

var textboxId = '<%=txtCountry.ClientID%>';
alert('My textbox id is: '  + textboxId);

и убедитесь, что вы получаете правильный идентификатор для текстового поля (помните, что он будет заархивирован ASP.Net, по крайней мере, убедитесь, что вы ничего не получаете). Затем, когда вы делаете document.getElementById , вам необходимо проверить результат перед использованием:

var myTextBox = document.getElementById(textboxId);
if (myTextBox !== null) {
    ...now i can access the properties...
}
...