Вопрос по очистке полей

Gor

Well-known member
07.06.2005
517
1
#1
Делаю бланк тестирования под WEB.

Возникла проблема.
На форме с тестированием на WebQueryOpen вешаю формульку для очистки всех полей от прошлых результатов.

Код:
@SetField("Reason1";"");
@SetField("Reason1_1";"");
В результате Одно поле чистится и срабатывает поле InputValidation, а другое не чистится...
В Input Validation в полях проверка @If(@ThisValue="";@Failure(ValidationErrorMsg+"You doesn't fill all fields");@Success)

Валидация не срабатывает изза того что не срабатывает WebQueryOpen одинаково для всех полей.

Поле Reason1 текстовое editable обычное
Поле Reason1_1 Radio button editable

Вот как раз @SetField("Reason1_1";""); не отрабатывается... Почему???

Как привести поле radio button к значению "" на момент открытия формы в WEB???
 

Gor

Well-known member
07.06.2005
517
1
#2
Дело в том что проблема точно в виде поля...
Пробовал менять поле Radiobutton на Editable. И на это же самое поле с таким же именем только другого типа Input Validation отрабатывает(((
Что делать??? Как всё таки почистить Radiobutton при открытии заявки в WEB до значения "" ???
 

Gor

Well-known member
07.06.2005
517
1
#3
Может быть кто нибудь тогда подскажет как сделать провеку поля на пустоту на JS?
Может у кого нибудь примерчик есть какой нибудь?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#4
не используй ты эти InputValidation, сделай проверку JS, а потом дополнительно LS-проверку, на случай, если JS обойдут...

по JS смотри циклы, метод document.getElementsByName()
алгоритм такой, радио-группа с именем поля Radio1 будет представлена набором html-элементов на странице, поэтому тебе нужно взять их все, и проверить, что какой-то отмечен - имеет свойство checked = true
а в LS просто берешь значение итема Radio1, и сравниваешь с нужным...
 

Gor

Well-known member
07.06.2005
517
1
#5
не используй ты эти InputValidation, сделай проверку JS, а потом дополнительно LS-проверку, на случай, если JS обойдут...

по JS смотри циклы, метод document.getElementsByName()
алгоритм такой, радио-группа с именем поля Radio1 будет представлена набором html-элементов на странице, поэтому тебе нужно взять их все, и проверить, что какой-то отмечен - имеет свойство checked = true
а в LS просто берешь значение итема Radio1, и сравниваешь с нужным...
Ок спасибо)
А вот эту проверку на JS script на каком событии делать???
На кнопке Submit??? Но у меня там же на формулах запуск агентов...Как сделать так чтобы сначала
поля проверить а потом агентов запустить Лотусовых типа @Do(@Command([ToolsRunMacro]; "(MegaFoodSubmitVote)");@Command([FileSave]);@Command([FileCloseWindow]))?
И не подскажете ещё какой нибудь ресурс где про JS под Лотус почитать можно??
 

Gor

Well-known member
07.06.2005
517
1
#6
Не пойму почему не получается проверка((

На OnClick поля радиобаттон повесил

// Радиобаттон выбран
function isValidRadio(UserInput_6) {
var valid = false;
for (var i = 0; i < UserInput_6.length; i++) {
if (UserInput_6.checked) {
return true;
}
}
alert("Выберете радиобаттон.");
return false;
}

По нажатию на кнопку Submit <input type="button" onclick="this.form.submit();" />
при неотмеченном поле ошибка не выходит ((( Почему?(
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#7
нету JS под нотес, во всяком случае, я нигде не нашел где описан JS работающий под нотесом, а на веб-страницах самый обычный JS, который работает в браузере! соотв, любую литературу можешь взять, их много, я сам пользуюсь MSDN, но он очень сильно заточен под IE...

для того, чтобы сделать проверки JS, то можно поступить разными способами, можно на сабмит, можно на кнопку, все зависит от того, как твой пользователь работает с документом!
например,
- на onSubmit можно прописать нужные проверки на JS, потом кликнуть по какой-то кнопке, которая уже запустит твой агент;
- можно поменять action для формы, и запустить нужный код, но это не самый удобный вариант, т.к. домино туда формирует нужный код, и его придется сохранять, чтобы потом выполнить, в общем, не самый удобный;
- если твой пользователь в конце работы с документом обязан нажать какую-то кнопку, то это не обязательно должна быть кнопка типа submit!, даешь ему другую кнопку, которая сначала выполняет проверки, потом либо кликает по кнопке, которая выполняет формулу, либо сама ж вызывает сабмит формы;

чтобы кодом кликнуть по кнопке нужно, чтобы была сама кнопка с указанным name и/или id, часто хорошо, если они одинаковые, т.е. на странице, в конце концов, должен появиться
Код:
<input type=button id="myButton1" value="clickMe" />
а код, который по ней кликает, может быть таким:
Код:
document.getElementById("myButton1").click();

------------------------------------------------------------------------------------------------------------------
потому что ты не вызов функции сделал, а объявил метод внутри функции обработчика...

повесь свою функцию в JS Header и запусти ее на обработчик onSubmit
 

Gor

Well-known member
07.06.2005
517
1
#8
Сделал следующим образом для полей типа text и radiobutton функция checkform

Код:
//var buttonClicked = '';
function checkform(form)
{
//	if (!(buttonClicked=='button')) return true;
if ( form.Reason1.value == '' ) { 
alert('Validation error: Please fill in "Вопрос1 field.');
form.Reason1.focus(); return false;
};
var IsChecked = false;
var TypeValue = '';
for (var i=0; i<form.UserInput_6.length; i++)
{
if (form.UserInput_6[i].checked) {IsChecked=true;TypeValue=form.UserInput_6[i].value;break}
}
if (!IsChecked) {alert('Вопрос 2 field.');return false};}
повесил на JS Header... и вызываю по кнопке
Код:
<input type="button" onclick="checkform(form);" />
работает))

Но чёто я всё равно не совсем понял как сейчас если ошибок не появилось запустить код @Do(@Command([ToolsRunMacro]; "(MegaFoodSubmitVote)");@Command([FileSave]);@Command([FileCloseWindow])) по этой же самой кнопке??
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#9
:blink:
сделай еще в JS Header функцию, например, MySubmit(), если твоя функция checkform возвращает true, если все хорошо, то можно ее такой сделать:

Код:
function MySubmit() {
if (checkform(document.forms[0]))
document.getElementById("nextAction").click();
};
где nextAction - кнопка форме, у которой id = "nextAction", а на этой кнопке свои собаки напиши

тогда, если проверка проходит удачно, то JS "кликнет" по нужной кнопке, и запустится собака...

надеюсь, понятно все :)
 

Gor

Well-known member
07.06.2005
517
1
#10
ну вроде понятно=)) только не работает)

мой jsHeader

Код:
function MySubmit() {
if (checkform(document.forms[0]))
document.getElementById("nextAction").click();
};

//var buttonClicked = '';
function checkform(form)
{
//	if (!(buttonClicked=='button')) return true;
if ( form.Reason1.value == '' ) { 
alert('Validation error: Please fill in "Вопрос1 field.');
form.Reason1.focus(); return false;
};
var IsChecked = false;
var TypeValue = '';
for (var i=0; i<form.UserInput_6.length; i++)
{
if (form.UserInput_6[i].checked) {IsChecked=true;TypeValue=form.UserInput_6[i].value;break}
}
if (!IsChecked) {alert('Вопрос 2 field.');return false};}
сделал кнопку обычную. В её закладке Html-> tag-> id = nextAction

И на картинке по событию Onclick -> MySubmit()

Проверки полей проходят, а вот агент не запускается)

@Do(@Command([ToolsRunMacro]; "(MegaFoodSubmitVote)");@Command([FileSave]);@Command([FileCloseWindow]))
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#11
а ты уверен, что твоя функция проверки возвращает true? :blink:
добавь в ее конец возврат true:

Код:
if (!IsChecked) {alert('Вопрос 2 field.');return false}; return true}
 

Gor

Well-known member
07.06.2005
517
1
#12
добавил :blink:
Теперь когда заполняешь все поля браузер ругается Error on page=)))

Может здесь чёто не так?

Код:
function MySubmit() {
if (checkform(document.forms[0]))
document.getElementById("nextAction").click();
};
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#13
ну, ты бы для примера привел текст ошибки, что ли :)

но, если он ругается на document.getElementById("nextAction"), значит у тебя нету в html'е элемента с таким айди, проверь исходники страницы, если такого элемента действительно нет, а кнопка есть, то значит она скрыта, а ее надо скрыть не от "страницы", а от юзеря, для этого нужно либо у нее прописать стиль display:hidden, либо поместить ее в какой-нить div с таким стилем...
 

Gor

Well-known member
07.06.2005
517
1
#14
но, если он ругается на document.getElementById("nextAction"), значит у тебя нету в html'е элемента с таким айди, проверь исходники страницы, если такого элемента действительно нет, а кнопка есть, то значит она скрыта, а ее надо скрыть не от "страницы", а от юзеря, для этого нужно либо у нее прописать стиль display:hidden, либо поместить ее в какой-нить div с таким стилем...
да, действительно не находил, изза того что кнопка скрыта была... как кнопку открыл всё отработало
вот и откуда узнать такие тонкости?))

прописал в кнопке в закладке html - > display:hidden почему то всё равно видна(
буду пытаться в div засунуть тогда
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#15
надо в раздел Html tags / Style прописывать

тонкости эти - практика
 

Gor

Well-known member
07.06.2005
517
1
#16
Код:
надо в раздел Html tags / Style прописывать
А где этот раздел находится?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#17
шутник однако :)

раздел Html tags на последней закладке у свойств кнопки, а чуть ниже полей id, name и т.п., есть Style
 

Gor

Well-known member
07.06.2005
517
1
#18
конец дня наверно сказывается))
=)) ну я это и имел ввиду в моём сообщении выше -
прописал в кнопке в закладке html - > display:hidden почему то всё равно видна(
т.е. в кнопке то я уже прописал display:hidden а кнопка всё равно не скрывается
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#19
ану-ка скинь в студию html твоей видимой кнопки со страницы :)
 

Gor

Well-known member
07.06.2005
517
1
#20
Код:
<input type="button" value="nextAction" id="nextAction" style="display:hidden" onclick="return _doClick('C325742E0026962F.67d3ce88d2ec7980c325742e0026e8cf/$Body/0.8D52', this, null)"></td></tr>
:)