Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Передать значение функции в value inputа (https://javascript.ru/forum/css-html-firefox-mizilla/22340-peredat-znachenie-funkcii-v-value-inputa.html)

lexbog 15.10.2011 19:20

Передать значение функции в 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>

Спасибо.

lexbog 16.10.2011 09:05

Переделал сам, всё работает:)

lev-otinov 22.09.2012 20:40

А не поделитесь опытом?

есть следующая функцыя

$.ajax({            
                    url: "get_iata_ip.php",                        
                    success: function(data) {
                        var ip = $.parseJSON(data);

                        var info = (ip.city_rus ? ip.city_rus:ip.city_eng)
    						  + ' (' + (ip.name_rus ? ip.name_rus:ip.name_eng) + ') '
    						  + ip.iata_code;
                

                
                    }            
                });


Надо info передать в Value инпута

sotik 22.09.2012 23:27

Приветствую.
Есть вот такой вот маленький код:
var cvet = [];
for(var i=0;i<4;i++){
cvet.push(getrandom(1,4));
alert('Массив: '+cvet[i]);
}

В js хочу поместить этот код в функцию и запускать для генерации других значений этого массива,соответственно с обнулением предыдущих...
Но выходя из функции данные массива обнуляются.
Предполагаю,что в конце функции надо писать:
return cvet
а это не работает.
Подскажите пожалуйста,что не так?

sotik 22.09.2012 23:41

Все,разобрался.
Нужно было вынести за пределы функции:
var cvet = [];


Часовой пояс GMT +3, время: 06:12.