Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   сохранение информации в инпут без сабмит (https://javascript.ru/forum/css-html/39073-sokhranenie-informacii-v-input-bez-sabmit.html)

najrobi 14.06.2013 12:07

сохранение информации в инпут без сабмит
 
здравствуйте!

как сохранить введённую информацию в поле инпут без нажатия сабмита? просто ввёл и инфа запомнилась...

желательно привести работающий пример.

спасибо!

devote 14.06.2013 12:11

<input id="myinput" />
<script>
    var input = document.getElementById('myinput');
    input.value = localStorage.getItem('dataForMyInput') || '';
    input.oninput = function() {
        localStorage.setItem('dataForMyInput', input.value);
    }
</script>

najrobi 14.06.2013 12:24

devote, спасибо!

а сделать так, чтобы оффлайн работало, можно?

devote 14.06.2013 12:26

Цитата:

Сообщение от najrobi
обы оффлайн работало, можно?

оно и так офлайн

najrobi 14.06.2013 12:36

что-то не работает под ie и ff.

закрываю браузер после введения данных в инпут, открываю - ничего.

devote 14.06.2013 12:45

Цитата:

Сообщение от najrobi
что-то не работает под ie и ff.

какой ИЕ и какой ФФ?

najrobi 14.06.2013 12:49

ff 21.0, ie 8

devote 14.06.2013 12:55

Цитата:

Сообщение от najrobi
ff 21.0, ie 8

вообще должно работать в этих браузерах

Хотя в ИЕ8 нет события oninput, можно сделать так:
<input id="myinput" />
<script>
    var input = document.getElementById('myinput');
    input.value = localStorage.getItem('dataForMyInput') || '';
    input.oninput = input.onkeyup = input.onmouseup = function() {
        localStorage.setItem('dataForMyInput', input.value);
    }
</script>

najrobi 14.06.2013 12:59

большое спасибо!!! заработало...

danik.js 14.06.2013 13:45

Цитата:

Сообщение от devote
input.onmouseup

А это то зачем?

devote 14.06.2013 13:51

Цитата:

Сообщение от danik.js
А это то зачем?

на всякий случай, если мышкой вставили что-то.. хотя в идеале нужно на onpaste повесить вместо onmouseup

danik.js 14.06.2013 14:03

onmouseup не срабатывает при вставке. С чего бы вдруг. И при d'n'd тоже не срабатывает. В идеале нужно onpropertychange использовать, но с ним тоже не все так просто.

devote 14.06.2013 14:07

Цитата:

Сообщение от danik.js
onmouseup не срабатывает при вставке. С чего бы вдруг. И при d'n'd тоже не срабатывает. В идеале нужно onpropertychange использовать, но с ним тоже не все так просто

Да я вкурсе, у меня вот эта либа отлавливает любое изменение инпутов, будь то вставка из буфера или драг-дроп, хотя драг-дроп дерьмого работает во всех браузерах, поэтому у меня на него просто заглушка.

najrobi 15.06.2013 00:22

danik.js, а можно пример? а то в ie9 что-то не работает, а нужно, чтобы работало во всех версиях.

спасибо!

devote 15.06.2013 00:26

Цитата:

Сообщение от najrobi
а то в ie9 что-то не работает

что именно не работает? тока что запустил в ИЕ9 все норм

najrobi 15.06.2013 00:42

просто не сохраняется введённая инфа... пустое поле показывает.

может быть, это из-за настроек безопасности браузера? при открытии страницы ie выдаёт сообщение, что запрещено выполнение скриптов и элементов управления "эктив х".

najrobi 15.06.2013 00:45

сорри, это блокируется первый вариант, который вы дали.

второй вариант не блокируется, но и не запоминается введённая инфа.

Deff 15.06.2013 00:59

<!DOCTYPE HTML>
<html>
  <head>
<script> function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+';path=/'+(c ? '; expires='+d.toUTCString() : '');else return false;}
 function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;}
</script>
 </head>
  <body>

<input id="myinput" />

<script>
    var input = document.getElementById('myinput');
    var a = getcookie('dataForMyInput') 
    input.value = '';if(a)input.value=a;
    input.oninput = input.onkeyup = input.onmouseup = function() {
        var a = input.value;
        var t = 1000*60*60*24*31;
        if(!a){a=1;t=-10;} //Нет значений - стираем кук;
        setcookie('dataForMyInput',a,t);
    }
</script>



  </body>
</html>

najrobi 15.06.2013 01:08

Deff, огромное спасибо! под ff работает идеально, никаких ошибок не выдаёт. но под ie снова выскакивает сообщение о блокировке работы "эктив х". отключил в настройках все запреты, но не помогает. и инфа в инпуте не сохраняется.

devote 15.06.2013 01:11

Цитата:

Сообщение от najrobi
но под ie снова выскакивает сообщение

да у вас там на странице что-то еще мешает.. Потому что мой скрипт идеально работает в IE8,IE9,IE10,Opera,FF,Chrome,Safari тока что проверил.

najrobi 15.06.2013 01:11

если потом делать файл exe, то куки не сохраняются?

есть какой-нибудь вариант, чтобы html-файл, переконвертированный в exe, сохранял информацию в инпуте?

najrobi 15.06.2013 01:15

devote, у меня выдаёт следующую ошибку: "не удалось получить значение свойства getitem: значением объёкта является NULL или он не определён

Deff 15.06.2013 01:17

Цитата:

Сообщение от devote
Потому что мой скрипт идеально работает в IE8,IE9,IE10,Opera,FF,Chrome,Safari тока что проверил.

У меняч тож,
наверно файервол - антивир или установки в ИЕ

devote 15.06.2013 01:17

почему getitem? должно быть getItem буква I должна быть большой

Deff 15.06.2013 01:19

najrobi,
Скриншот сделайте - загрузить можно сюда => http://uploads.ru/

Deff 15.06.2013 01:21

Цитата:

Сообщение от najrobi
. но под ie снова выскакивает сообщение о блокировке работы "эктив х". отключил в настройках все запреты, но не помогает. и инфа в инпуте не сохраняется.

Если Вы тестируете в этом топике - то тут часто ограничения по безопасности из-за чужого фрейма - вклейте скрипт у себя на страницу

najrobi 15.06.2013 01:22

devote, написано с большой "I". это просто вылетает сообщение, когда я смотрю в homesite, там "i" маленькая.

Deff, файервол и антивир молчат, но ie блокирует работу "эктив х". менял настройки во всех вариациях, не помогает. при этом такая ситуация как у меня на домашнем компе, так и на рабочем. на рабочем установлена 8-я версия ие.

najrobi 15.06.2013 01:28

Deff, скриншот

я не здесь тестирую... но тест идёт оффлайн. нужна работа именно оффлайн.

devote 15.06.2013 01:30

Цитата:

Сообщение от najrobi
скриншот

емае... дык у вас ИЕ в режим совместимости уходит... воткните на страницу нормальный DOCTYPE например этот:
<!DOCTYPE html>
в самом начале страницы

И кстати возможно ИЕ не умеет сохранять localStorage и куки когда страницу открывают без сервера.. я не проверял

najrobi 15.06.2013 01:33

devote, не помогает...

najrobi 15.06.2013 01:34

ну это ладно, под самим браузером такую ошибку не выдает... но вылетает сообщение блокировке работы эктив х и инфа в форме не сохраняется.

najrobi 15.06.2013 01:34

вот под фф работает идеально.

Deff 15.06.2013 01:35

devote,
мож тупо через window.name ?

devote 15.06.2013 01:39

Цитата:

Сообщение от najrobi
блокировке работы эктив х

ну да, я так и думал... вылетает сообщение при открытие html как обычный файл... Причем даже пустой файл открыл с присутствием пустого тега SCRIPT, дык ИЕ уже начал орать.. так что думаю это врядли решить можно.

devote 15.06.2013 01:39

Цитата:

Сообщение от Deff
мож тупо через window.name ?

ИЕ просто увидев тег SCRIPT в документе, уже орет об ActiveX и скриптах.. Так что тут и window.name не поможет

najrobi 15.06.2013 01:44

devote, т.е. оффлайн работа для ие невозможна?

но при конвертации в ехе это сообщение не вылетает. пробовал с другими скриптами, в ие вылетает сообщение, но под ехе уже его нет, а скрипты работают.

с этим же скриптом не удаётся в ехе запомнить инфу в поле.

Deff 15.06.2013 01:47

Цитата:

Сообщение от devote
Причем даже пустой файл открыл с присутствием пустого тега SCRIPT

а ежели по онлоад
<img src="http://forum.mybb.ru/i/blank.gif"  onload="alert('A')"/>

Ток нун перезалить на locaхост картинку, ( у меня alertит

Deff 15.06.2013 01:53

najrobi,
такой скрипт в Ие работает?

<script type="text/javascript">
window.name='asdsad'
alert(window.name)
</script>

najrobi 15.06.2013 01:57

после того, как я разрешаю работу эктив х, работает.

Deff 15.06.2013 02:00

najrobi, А такое ? (возможно картинку нужно перезалить на комп или вставьте свою ссылку)
<img src="http://forum.mybb.ru/i/blank.gif"  onload="alert('A')"/>


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