Вход

Просмотр полной версии : Вопрос по select


simix07
20.05.2013, 09:13
Доброго времени суток дамы и господа. Подскажите пожалуйста как получить текст элемента option, если он динамически изменяется.
Есть форма:

<input type="hidden" name="ctl00$ContentPlaceHolder1$SignatureValueHF" id="ctl00_ContentPlaceHolder1_SignatureValueHF" />
<input type="hidden" name="ctl00$ContentPlaceHolder1$SignatureTypeHF" id="ctl00_ContentPlaceHolder1_SignatureTypeHF" />
<span style="font-family: Tahoma"><span style="font-size: 11pt;">Выберите сертификат
подписи</span>
<hr width="50px" align="left" />
<div class="controlLayout">
<select size="2" name="ctl00$ContentPlaceHolder1$CertListBox" id="ctl00_ContentPlaceHolder1_CertListBox" style="border-color:#F73F08;border-width:1px;border-style:Solid;height:30px;width:410px;resize: vertical;">

</select>
<p align="right">Наименование организации: <input type="text" name="Orgname" size="50" maxlength="50" value="ООО Ромашка"></p>
<p align="right">Фамилия:<input type="text" name="LastName" size="50" maxlength="50" value="Иванов"></p>
<p align="right">Имя: <input type="text" name="FirstName" size="50" maxlength="50" value="Иван"></p>

Нужно сделать кнопку Выбрать (как сделать саму кнопку я знаю), какой параметр написать в onclick если мне надо разобрать на составляющие полный текст значений сертификата и раскидать их по полям в input.

Никак не могу понять, как при помощи КриптоПРО ЭЦП Browser Plugin, автоматически заполнить поля наименование организации, фамилия и имя из сертификата ЭЦП.
Подскажите пожалуйста на примере 1-ой строки например ИМЯ, и я дальше все сделаю.

simix07
20.05.2013, 09:50
Добавлю, сама функция уже описана:
function FillCertList(lstId, BrowserName) {
var oStore = ObjCreator("CAPICOM.store", BrowserName);
if (!oStore) {
alert("store failed");
return;
}

try {
oStore.Open();
}
catch (e) {
alert("Ошибка при открытии хранилища: " + GetErrorMessage(e));
return;
}

var certCnt = oStore.Certificates.Count;

var lst = document.getElementById(lstId);
for (var i = 1; i <= certCnt; i++) {
var cert;
try {
cert = oStore.Certificates.Item(i);
}
catch (ex) {
alert("Ошибка при перечислении сертификатов: " + GetErrorMessage(ex));
return;
}

var oOpt = document.createElement("OPTION");
try {
oOpt.text = cert.SubjectName;
}
catch (e) {
alert("Ошибка при получении свойства SubjectName: " + GetErrorMessage(e));
}
try {
oOpt.value = cert.Thumbprint;
}
catch (e) {
alert("Ошибка при получении свойства Thumbprint: " + GetErrorMessage(e));
}

lst.options.add(oOpt);
}

oStore.Close();
}

Меня интерисует поле SubjectName:
SubjectName: CN=ФИО, T=Должность, OU=Отдел, O=Организация, E=email, S=Город, L=область, C=RU, INN=6312000000, OGRN=Огрн, STREET="улица, 21/36, офис 21", UnstructuredName="КПП=631901001"
Знаю, что выдернуть их можно при помощи oStore.Certificates.Item(i); но как это сделать я не понимаю....

Собственно задача, выдернуть из выбранного сертификата поля по полочкам и раскидать визуаьльно их в input

simix07
20.05.2013, 11:15
Полный код формы:
<form>
<input type="hidden" name="ctl00$ContentPlaceHolder1$SignatureValueHF" id="ctl00_ContentPlaceHolder1_SignatureValueHF" />
<input type="hidden" name="ctl00$ContentPlaceHolder1$SignatureTypeHF" id="ctl00_ContentPlaceHolder1_SignatureTypeHF" />
<span style="font-family: Tahoma"><span style="font-size: 11pt;">Выберите сертификат
подписи</span>
<hr width="50px" align="left" />
<div class="controlLayout">
<select size="1" name="ctl00$ContentPlaceHolder1$CertListBox" id="ctl00_ContentPlaceHolder1_CertListBox"
style="border-color:#F73F08;
border-width:1px;border-style:Solid;height:30px;width:410px;resize: vertical;">

</select>
<input type="button" value="Заполнить" onClick="">

</div>


<h3>Шаг 1.</h3>
<p align="right">Заявитель: <input type="text" name="Orgname" size="50" maxlength="50" value="ООО Ромашка"></p>
<p align="right">ФИО заявителя:<input type="text" name="CN" size="50" maxlength="50" value="Иванов Иван Иванович"></p>

<p align="right">Юр.адрес: <input type="text" name="UrAdress" size="50" maxlength="50" value="123456, Россия, Москва, ул. Советская, 1"></p>
<p align="right">Почтовый адрес: <input type="text" name="PostAdress" size="50" maxlength="5" value="123456, Россия, Москва, а/я 12345"></p>
<p align="right">ИНН: <input type="text" name="INN" size="10" maxlength="10" value="7711111111"></p>
<p align="right">КПП: <input type="text" name="KPP" size="10" maxlength="10" value="770101001"></p>
<p align="right">E-mail: <input type="text" name="email" size="50" maxlength="50" value="ivanov@mail.ru"></p>
<p align="right">Телефон: <input type="text" name="phone" size="11" maxlength="11" value="+7 (495)1234567"></p>
<p align="right">Контактное лицо: <input type="text" name="contactname" size="50" maxlength="50" value="Петров Петр Петрович"></p>
</form>
Когда пишу более менее сам понимать начинаю :)))
Задача, определить, какой выбран сертификат, получить из него строку SubjectName, из этой строки, выбрать определенные данные и подставить их в значение value в инпутах...

ksa
20.05.2013, 15:33
как получить текст элемента option
Как вариант...

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function test() {
var o=document.getElementById('test');
alert(o.options[o.selectedIndex].innerHTML);
};
</script>
</head>
<body>
<select id='test'>
<option></option>
<option>Item 1</option>
<option>Item 2</option>
<option>Item 3</option>
</select>
<button onclick='test();'>getTextOption</button>
</body>
</html>