На данный момент, если я использую JavaScript в своих проектах SharePoint, я добавляю код в файл *.ascx, в блок <script type="text/javascript"></script>
и создаю для каждого элемента переменную для ClientID
.
Например:
var test = '<%= TextBox1.ClientID %>';
Теперь я хотел бы добавить внешний JavaScript в свои проекты и вставить туда код. Но как я мог получить доступ к ClientID
? Во внешнем JavaScript я не могу использовать <%= TextBox1.ClientID %>
. Я нашел это: ссылка на серверные элементы управления во внешнем файле но я не понимаю, как это должно работать. Было бы здорово, если бы кто-нибудь объяснил мне, как получить доступ к идентификаторам.
Кстати, почему это:
<script type="text/javascript">
var ClientIDs = {
test1 : '<%= TextBox1.ClientID %>',
test2 : '<%= TextBox2.ClientID %>'
}
function SetButtonStatus() {
alert($(ClientIDs.test1).value);
}
</script>
не работает, сообщение не будет отображаться?
Гретц
Редактировать 1:
Хорошо, я могу просто использовать textBox1 в своем внешнем скрипте? Я сделал это так, это в моем файле *.ascx:
<script type="text/javascript">
var ClientIDs = {
textBox1: '<%= textBox1.ClientID %>',
textBox2: '<%= textBox2.ClientID %>'
}
</script>
В моем внешнем скрипте у меня есть только функция для проверки:
function test () {
alert($(ClientIDs.textBox1).val();
}
Я также проверил это с "#" +
. Каждый раз, когда выполняется test(), я получаю следующую ошибку:
"document.getElementById(...)" is null or not an object
Изменить 2: я пропустил )
в предупреждении. Но теперь я получаю сообщение о том, что переменная не определена. Если я использую: $('#' + ClientIDs.SumbitSearch).val()
, я просто получаю текст, а не идентификатор своего элемента управления.
Редактировать 3: На данный момент я использую:
<script type="text/javascript">
var ClientIDs = {
test1 : '<%= TextBox1.ClientID %>',
test2 : '<%= TextBox2.ClientID %>'
}
function test() {
alert($('#' + ClientIDs.test1).attr("id")));
}
</script>
В моем файле *.ascx это работает. Мне так не нравится... Во внешнем JS не работает, ссылки не работают. Если у кого-то есть другие идеи, которые будут работать с .net 3.5, было бы неплохо, если бы он дал мне знать.
ClientIDs
ссылка. Но я не могу получить доступ к переменной из моего внешнего JS. Грец. - person Andre Hofmeister   schedule 25.10.2011..._yyyyyy_ctl00_TextBox1ID
Веб-часть 2: TextBox1 ID:..._xxxxxx_ctl00_TextBox1ID
Или вы имеете в виду, что переменная JS, в данном случаеClientIDs
, существует более одного раза? Какое ему дело, если идентификаторы ClientID являются частными, а полный код JS находится в файле ascx. Или я это неправильно понял? - person Andre Hofmeister   schedule 27.10.2011clientIDMode="Static
, SP2010 работает только с .net 3.5. Грец. - person Andre Hofmeister   schedule 28.10.2011