2010-09-01 2 views
0

Я пытаюсь добавить событие на стороне клиента в раскрывающийся список, и мне нужно получить доступ к выбранному в данный момент тексту. Я пробовал:получить текст vaule на стороне клиента dropdownlist

ddl_tech.Attributes.Add("onclick", "document.getElementById('" + chk_techreview.ClientID + "').disabled = this.options[this.selectedIndex].text.Equals(' UNASSIGNED');"); 

и

ddl_tech.Attributes.Add("onclick", "document.getElementById('" + chk_techreview.ClientID + "').disabled = this.text.Equals(' UNASSIGNED');"); 

Оба которые дают мне во время выполнения ошибки, когда событие.

Каков правильный способ доступа к этой стороне клиентского свойства текста?

Я попробовал это, но это не дает флажок ...

ddl_tech.Attributes.Add("onchange", "document.getElementById('" + chk_techreview.ClientID + "').disabled = this.options[this.selectedIndex].text == ' UNASSIGNED';"); 

ОТВЕТ:

Ну, наряду с необходимостью использовать ==, а не .equals, когда вам установите флажок checkbox.enabled = false на стороне сервера, он разорвет флажок в тегах и отключит значение = true; поэтому вы должны установить BOTH checkbox.disabled = false и checkbox.parentElement.disabled = false; на стороне клиента, чтобы включить этот флажок!

Решение:

ddl_tech.Attributes.Add("onchange", "document.getElementById('" + chk_techreview.ClientID + "').parentElement.disabled = (this.options[this.selectedIndex].text == 'UNASSIGNED'); document.getElementById('" + chk_techreview.ClientID + "').disabled = (this.options[this.selectedIndex].text == 'UNASSIGNED');"); 

Спасибо за помощь!

+0

«UNASSIGNED» ссылается на option.text или option.value? –

+0

текст. Существует другое значение. Но даже если я поставлю == 'abc123', когда событие срабатывает, он будет оценивать false, а chekbox должен быть отключен = false. поэтому я не думаю, что это может быть проблемой. – kralco626

ответ

3

Там нет .Equals() на строку в JavaScript, вместо того, чтобы использовать === оператор, как это:

ddl_tech.Attributes.Add("onchange", "document.getElementById('chk_techreview').disabled = (this.options[this.selectedIndex].text === 'UNASSIGNED');"); 

You can give it a try here, я также изменила событие до onchange, так как это возможно больше того, что вам нужно. Кроме того, в зависимости от вашего варианта это может быть только 'UNASSIGNED', а не ' UNASSIGNED'.

+0

Я думаю, что он должен работать лучше. Это «Неназначенный», но это дешевый способ заставить его появиться в верхней части сортированного списка. Не лучший способ получить его наверху, но он работает везде (SQL, asp и т. Д.) Спасибо! – kralco626

+0

Пробовал, но он, похоже, не работает. Я отправил то, что я пробовал в своем вопросе ... – kralco626

+0

@ kralco626 - Вам не хватает набора круглых скобок, также проверьте '' UNASSIGNED'' '' 'UNASSIGNED'' (без пробела). –

1

Я считаю, что это должно быть:

ddl_tech.Attributes.Add("onclick", "var s = document.getElementById('" + chk_techreview.ClientID + "'); s.disabled = (s.selectedIndex == -1 || s.options[s.selectedIndex].text == ' UNASSIGNED ');"); 
Смежные вопросы