Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи мови JavaScript.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.04 Mб
Скачать

3.3.9. Многострочное поле textarea

У тих випадках, коли що редагується текст повинний займати декілька рядків, у формі між операторами <TEXTAREA> і </TEXTAREA> розташовують многострочное текстове поле:

<TЕХТАRЕА

NAМЕ="Ім'я_поля_tехtагеа"

ROWS="Кількість_рядків"

СОLS="Кількість_стовпчиків"

WRAP="Режим_пакунки_тексту"

onBlur="Оброблювач_події"

onСhаngе="Оброблювач_події"

onFocus="Оброблювач_події"

onSelect="Оброблювач_події">

...

Відображуваний текст

</TEXTAREA>

Тут за допомогою параметра NAME треба зазначити ім'я поля. Воно потрібно для того, щоб сценарій JavaScript міг обертатися до властивостей і методів цього поля.

Параметри ROWS і COLS визначають видимий розмір многострочного поля редагування, задаючи відповідно кількість рядків і стовпчиків (кількість символів, що можуть поміститися в однім рядку).

Параметр WRAP задає засіб пакунки тексту і може мати одне з трьох таких значень:

Значення Засіб пакунки тексту

off Свертка виключена, рядки відображаються так, як уводяться

virtual Рядки сворачиваются тільки при відображенні у вікні редагування, але передаються розширенню серверу Web і сценарію JavaScript точно в такому виді, у якому вводяться

physical При пакунку в переданий текст записуються символи нового рядка

Методи об'єкта textarea

Для об'єкта textarea визначені такі ж методи, що і для об'єкта text. Це методи focus, blur і select, що не мають параметрів.

За допомогою методу focus сценарій JavaScript може передати фокус полю редагування, а за допомогою методу blur - відібрати фокус у цього поля.

Виклик методу select призводить до виділення вмісту многострочного поля редагування.

Оброблювачі подій об'єкта textarea

Оброблювачі подій визиваються в таких випадках:

Оброблювач Коли визивається

onFocus Поле редагування одержує фокус запровадження

onBlur Поле редагування утрачає фокус запровадження

onChange Змінюється вміст поля редагування

onSelect Виділяється вміст поля редагування

3.3.10. Приклад сценарію, що заповнює поле textarea

Многострочное поле редагування розташовується у формах для того щоб користувач міг записати в ньому своє відкликання, коментар, питання або аналогічну інформацію. За допомогою сценарію JavaScript неважко виконати попереднє заповнення поля яким-небудь текстом. Наприклад, нехай потрібно створити форму, призначену для відправлення через Internet відкликання про роботу деякої програми.

Якщо включити перемикач "Подяка", сценарій автоматично запише в поле редагування дату і час підготування відкликання, а також текст позитивного відкликання. До цього тексту вам залишиться додати тільки підпис.

Для відправлення відкликання натисніть кнопку Complete. У результаті на екрані з'явиться діалогова панель із текстом позитивного відкликання.

Для того щоб повідомити виготовлювачу програми про помилки, варто включити перемикач "Проблеми". Відразу після цього сценарій запише в многострочное поле текст відповідного повідомлення. Цей текст треба будет відредагувати і доповнити, описав, наприклад, зовнішні прояви виявленої помилки.

Натискання кнопки Complete дозволить побачити текст повідомлення.

Вихідний текст документа HTML, у якому визначена форма для відправлення відкликання, а також обробну цю форму сценарій JavaScript подані в листинге 3.5.

Листинг 3.5. Файл chapter3/textarea/textarea. html

<HTML>

<HEAD>

<TITLE>Pa6oтa із многострочным текстовим полемо</ТIТLЕ>

<SCRIPT LANGUAGE="JavaScript">

var szOK = "Спасибі!\nВаша програма працює без помилок.";

var szTrouble = "НА жаль, із вашою програмою в наc виникнули проблема.";

var szProbList = "\nСерийный номер програми:

ХХХХХХ\nДата покупки: ХХ-ХХ-ХХ";

function getDate()

{

var szDate = "";

szDate = new Date();

return szDate.toLocaleString() + "\n";

}

function chkRadio(form,value)

{

if(value == "Thanks")

Sel.Comment.value = getDatet) + szOK;

else

Sel.Comment.value = getDate() + szTrouble + szProbList;

}

function init()

{

Sel.Comment.value = getDate() + szOK;

}

function Complete()

{

szMsg = Sel.Comment.value;

alert(szMsg);

}

//-->

</SCRIPT>

</HEAD>

<BODY BGCOLOR=white>

<Н1>Пришлите ваше відкликання</Н1>

<FORM NAME = "Sel">

<P><INPUT TYPE="radio" NAME="TextSelect" CHECKED

VALUE="Thanks"

onClick="if(this.checked)

{chkRadio(this.form,this.value);}"> Подяка

<BR><INPUT TYPE="radio" NAME="TextSelect"

VALUE="Trouble"

onClick="if(this.checked)

{chkRadio(this.form,this.value);}"> Проблеми

<P><TEXTAREA NAME="Comment"

ROWS="5" COLS="25" WRAP="physical">

</TEXTAREA>

<P><INPUT TYPE="button" VALUE="Compiete"

onClick="Complete();">

</FORM>

<SCRIPT LANGUAGE="JavaScript">

<!--

init();

//-->

</SCRIPT>

</BODY>

</HTML>

Варто звернути увагу на те, що у формі многострочное поле редагування тексту textarea створено порожнім:

<TEXTAREA NAME="Comment"

ROWS="5" COLS="25" WRAP="physical">

</TEXTAREA>

Це поле називається "Comment", має п'ять рядків, у яких розміщається до 25 символів, і режим пакунки тексту physical, що припускає додавання символів нового рядка, що розділяють окремі рядки введеного тексту.

Як відбувається заповнення цього поля?

У самому кінці області тіла документа HTML, обмеженого операторами <BODY> і </BODY>, уставлений виклик функції init:

<SCRIPT LANGUAGE="JavaScript">

<!--

init();

//-->

</SCRIPT>

Ця функція визивається після завершення завантаження тіла документа і виконує початкове заповнення многострочного поля редагування textarea:

Sel. Comment. value = getDate() + szOK;

Рядок, що записується в це поле, утвориться шляхом додавання рядка поточної дати, отриманої від функції getDate (ця функція визначена в сценарії), із рядком szOK, що містить текст позитивного відкликання.

Функція getDate визначена в такий спосіб:

function getDate()

{

var szDate = "";

szDate = new Date();

return szDate. toLocaleString () + "\n";

}

У цій функції спочатку створюється об'єкт класу Data, а потім визивається для цього об'єкта метод toLocaleString, що повертає текстовий рядок дати.

У верхній частині форми знаходяться два перемикачі з залежною фіксацією. За допомогою цих перемикачів користувач може вибрати вид відкликання (подяка або повідомлення про помилку):

<INPUT TYPE="radio" NAME="TextSelect" CHECKED VALUE="Thanks" onClick="if(this.checked)

{chkRadio(this.form,this.value);}"> Подяка

<BR><INPUT TYPE="radio" NAME="TextSelect" VALUE="Trouble"

onClick="if(this. checked)

{chkRadio(this. form,this. value);}"> Проблеми

Обидва перемикачі ставляться до однієї групи і тому мають однакове значення параметра NAME. Для першого з них додатково зазначений параметр CHECKED, тому по умовчанню він знаходиться у включеному стані (тут передбачається, що кількість позитивних відкликань буде перевищувати кількість повідомлень про помилки).

Кожний із перемикачів має оброблювач події onClick, визначений у такий спосіб:

if(this.checked)

{

chkRadio(this. form,this. value);

}

При зміні стани перемикача визивається функція chkRadio. Ця функція перевіряє ім'я включеного перемикача і заповнює поле многострочного редактора textarea відповідним повідомленням:

function chkRadio(form,value) {

if(value == "Thanks")

Sel.Comment.value = getDate () + szOK;

else

Sel. Comment. value = getDate() + szTroubie + szProbList;

}

Функція chkRadio комбінує тексти повідомлень із поточної дати і заздалегідь проинициализированных рядків szOK, szTroubie і szProbList.

Тепер про те, як сценарій одержує текст із поля редагування і відображає його в діалоговій панелі.

Для кнопки Complete ми визначили оброблювач події onClick:

<INPUT TYPE="button" VALUE-="Complete"

onClick="Complete();">

Цей оброблювач викликає функцію Complete, що відображає підготовлене відкликання на екрані:

function Complete()

{

szMsg = Sel.Comment.value;

alert(szMsg);

}

Тут текст витягається з поля textarea як значення властивості value для відповідного об'єкта, а потім відображається на екрані за допомогою умонтованої функції alert.