Я заполняю страну dropdownlist от базы данных. Я должен выбрать значение из выпадающего списка и присвоить его текстовому полю при помощи 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();
путем выполнения этого я получаю ошибку. Какие-либо решения?
Ваш код неправильный, посмотрите, где я внес изменения в тот же код:
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 элемента.
Надеюсь, это поможет.
Эти две строки:
document.getElementById(textboxId).value = strUser;
document.getElementById(textboxId).focus();
тоже неверны. Если ваша предыдущая строка действительно сработала:
var textboxId = document.getElementById("txtCountry");
, то то, что вы назвали textboxId , на самом деле будет элементом управления текстовым полем, поэтому вы будете выполнять 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...
}
Попробуйте с:
document.getElementById('<%=txtCountry.ClientID%>').value
или
var textBox = document.getElementById('<%=txtCountry.ClientID%>');
textBox.value = strUser;
Это потому, что идентификаторы html-элементов в созданных документах не совпадают с идентификатором, который вы назначили в своем коде. Чтобы получить идентификатор, назначенный элементу управления в html- файле, можно использовать свойство ClientID раскрывающегося списка.
Другая проблема заключается в том, что вы назначаете элемент yourhtml переменной, а затем используете функцию getElementById, которая не является допустимым вызовом.
Это изменилось в ASP.NET 4, которая вот-вот выйдет.
Надеюсь, что поможет!