Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Взаимодействие с пользователем без сервера (https://javascript.ru/forum/misc/41156-vzaimodejjstvie-s-polzovatelem-bez-servera.html)

devote 04.09.2013 16:58

alexandr_ftf,
понятно, ну это уже браузер так работает с полем input, можно конечно переделать на textarea например:
<script type="text/javascript">
function multiPrompt(options, callback) {
    var wrapper = document.createElement('div');
    wrapper.style.cssText = 'position: fixed; top: 0; left: 0; width: 100%; height: 100%;';
    wrapper.innerHTML = '<div style="position: fixed; width: 100%; height: 100%; background: #000; opacity: 0.05;' +
        'filter: Alpha(opacity=5);"></div><table style="position: relative; margin: auto; height: 100%;"><tr><td>' +
        '<div style="position: relative; background: #FBFBFB; border: 1px solid #BFBFBF; border-radius: 4px;' +
        'box-shadow: 0 2px 3px rgba(0,0,0,0.6); padding: 10px;"><div></div><div style="padding: 10px 0 0 0;' +
        'float: right;"><button style="border: 1px solid #bfbfbf; width: 80px; margin-left: 10px;height: 25px;' +
        '">Ок</button><button style="border: 1px solid #bfbfbf; width: 80px; margin-left: 10px; height: 25px;' +
        '">Отмена</button></div><div style="clear: both;"></div></div></td></tr></table>';
 
    options = options instanceof Array ? options : [[options]];
    var inputsBox = wrapper.getElementsByTagName('div')[2];
    for(var i = 0; i < options.length; i++) {
        options[i] = options[i] instanceof Array ? options[i] : [options[i]];
        var titleDiv = document.createElement('div');
        titleDiv.innerHTML = typeof options[i][0] === 'undefined' ? '&nbsp;' : options[i][0];
        inputsBox.appendChild(titleDiv);
        var input = document.createElement('textarea');
        input.style.cssText = 'min-width:300px;width:100%;height:21px;resize:none;padding: 0px;' +
            'white-space:nowrap;overflow:hidden;padding:0;font-size:14px;font-family:Arial;';
        input.value = typeof options[i][1] === 'undefined' ? '' : options[i][1];
        input.onkeydown = function(e) {
            e = e || window.event;
            if (e.keyCode == 13) {
                if (e.preventDefault) {
                    e.preventDefault();
                } else {
                    e.returnValue = false;
                }
            }
        }
        inputsBox.appendChild(input);
    }
    var buttons = wrapper.getElementsByTagName('button');
    var cancel = function(e) {
        e = e || window.event;
        if (e.type == 'keydown') {
            if (e.keyCode !== 27) {
                return;
            }
        }
        if (document.removeEventListener) {
            document.removeEventListener('keydown', cancel);
        } else {
            document.detachEvent('onkeydown', cancel);
        }
        wrapper.parentNode.removeChild(wrapper);
    }
    buttons[0].onclick = function() {
        var inputs = wrapper.getElementsByTagName('textarea');
        var results = [];
        for(var i = 0; i < inputs.length; i++) {
            results[results.length] = inputs[i].value;
        }
        cancel({});
        callback && callback(results);
    }
    buttons[1].onclick = cancel;
    if (document.addEventListener) {
        document.addEventListener('keydown', cancel);
    } else {
        document.attachEvent('onkeydown', cancel);
    }
 
    document.body.appendChild(wrapper);
}
</script>
<button onclick="multiPrompt(['Имя', 'Фамилия', 'Отчество'], function(a){alert(a)})">Показать окно 1</button>
 
<button onclick="multiPrompt([['Имя', 'Иван'], ['Фамилия', 'Иванов'], ['Отчество', 'Иванович']], function(a){alert(a)})">Показать окно 2</button>
 
<button onclick="multiPrompt('Введите число', function(a){alert(a)})">Показать окно 3</button>

alexandr_ftf 04.09.2013 17:10

Вопрос решился просто заменой input на textarea

alexandr_ftf 04.09.2013 17:11

Да, спасибо


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