Факт: JSP работает на веб-сервере, создает HTML/CSS/JS и отправляет его в webbrowser. JS работает в webbrowser и видит только дерево DOM HTML, а не любую строку Java/JSP. Правая страница в веб-браузере, выберите Посмотреть Souce и посмотреть сами. Ты это понял? ОК, затем продолжайте.
В созданном HTML-источнике вы должны увидеть некоторые элементы HTML <input type="text">
вместо компонентов Struts '<html:text>
. Я не делаю Struts, но немного приличная среда MVC назначит эти HTML-элементы id
. Если это не сделано или когда значение идентификатора генерируется случайным образом, вы должны установить фиксированный идентификатор самостоятельно. Согласно TLD documentation, вам необходимо установить атрибут styleId
: <html:text styleId="someFixedId">
.
Наконец, напишите функцию JS, которая будет выполнена при щелчке по галочке, и соответственно изменит атрибут disabled
этих текстовых элементов. Энди Е уже дал некоторые намеки. Вот как должен выглядеть JSP:
<html:text property="my_dto.number1" styleId="number1" />
<html:text property="my_dto.number2" styleId="number2" />
<input type="checkbox" id="isTrue" onclick="disableNumbers(this)" />
<script>
function disableNumbers(checkbox) {
var number1 = document.getElementById("number1");
var number2 = document.getElementById("number2");
number1.disabled = number2.disabled = checkbox.checked;
}
</script>
Я думаю, что * onchange * будет более подходящим, * onclick * не будет срабатывать, если вы сфокусируете флажок и нажмите клавишу пробела. Я не помню, если * onchange * срабатывает до или после, так что может понадобиться также тайм-аут 0мс. –
@ Энди: он будет :) [Испытай себя] (http://jsbin.com/erene3). О, есть еще один недостаток onchange: он срабатывает только тогда, когда флажок теряет фокус. – BalusC
huh, я не мог найти, что документировано где угодно ... Вы правы в том, что событие * change * срабатывает, когда фокус потерян (но это не относится ко всем браузерам, и это только тот случай, когда используется клавиатура). Я думаю, вы доказали, что событие * click * работает лучше для этой ситуации, хотя, +1 :-) –