Показать сообщение отдельно
  #1 (permalink)  
Старый 15.10.2011, 19:20
Новичок на форуме
Отправить личное сообщение для lexbog Посмотреть профиль Найти все сообщения от lexbog
 
Регистрация: 15.10.2011
Сообщений: 2

Передать значение функции в value inputа
Всем привет.

Столкнулся с проблемой:
Скрипт генерации паролей с выводом результата в div был через id элемента, а мне нужен был результат в input для записи в БД.
Вот я немного его модернизировал, но в Мозиле пароль не генерится.
Вернее из cmsки в мозиле не работает, а если просто файлик с компа загружать, то работает. Но в опере, хроме и ИЕ работает и из cmsки.
Подскажите, пожалуйста,в чём может быть ошибка и как исправить этот косяк.
Вот код скрипта:

<div class="jsPassGenWrapper">

<div id="jsPassGenForm"></div>
<input type="text" id="jsPassGenForm2" name="jsPassGenForm"/>
<div class="jsPassGenCtrls">
<input type="hidden" id="jsPassGenUseNumsCB" checked="checked" />
<label for="jsPassGenUseNumsCB">Use numbers</label><br />
<input type="button" value="Create password" onClick="runPassGen()" />
</div>
<script type="text/javascript">
/* @param id - идентификатор блока для вставки паролей)
@param syllableNum - количество слогов в пароле
@param numPass - количество количество паролей вставляемых в блок
@param useNums - использовать числа или нет */
function jsPassGen(id, syllableNum, numPass, useNums) {
id = typeof(id) != 'undefined' ? id : 'jsPassGenForm'; // параметры по умолчанию
syllableNum = typeof(syllableNum) != 'undefined' ? syllableNum : 3;
numPass = typeof(numPass) != 'undefined' ? numPass : 1;
useNums = typeof(useNums) != 'undefined' ? useNums : true;

function rand(from, to) {
from = typeof(from) != 'undefined' ? from : 0; // параметры
to = typeof(to) != 'undefined' ? to : from + 1; // по умолчанию
return Math.round(from + Math.random()*(to - from));
};

function getRandChar(a) {
return a.charAt(rand(0,a.length-1));
}

var form = document.getElementById(id);
// Наиболее подходящие согласные для использования их в качестве заглавных
var cCommon = "bcdfghklmnprstvz";
var cAll = cCommon + "jqwx"; // Все согласные
var vAll = "aeiouy"; // Все гласные
var lAll = cAll + vAll; // Все буквы

form.innerHTML = "";
for(var j = 0; j < numPass; ++j) {
// Коэффициент определяющий вероятность появления числа между слогами
var numProb = 0, numProbStep = 0.25;
for(var i = 0; i < syllableNum; ++i) {
if(Math.round(Math.random())) {
form.innerHTML += getRandChar(cCommon).toUpperCase() +
getRandChar(vAll) +
getRandChar(lAll);
} else {
form.innerHTML += getRandChar(vAll).toUpperCase() +
getRandChar(cCommon);
}
if(useNums && Math.round(Math.random() + numProb)) {
form.innerHTML += rand(0,9);
numProb += numProbStep;
}
}
var rezz = form.innerHTML;
document.getElementById('jsPassGenForm2').value = rezz;
}
return true;
// document.getElementById(id).value = form.innerHTML;
}

function runPassGen() {
jsPassGen('jsPassGenForm', 3, 1, jsPassGenUseNumsCB.checked);
}

runPassGen();
</script>
</div>

Спасибо.
Ответить с цитированием