2012-05-18 1 views
1

Привет друзья У меня есть <input type="text" id="tempID" /> элемент в моей формедобавить значения в текстовое поле, историю без отправки формы с помощью JavaScript или Jquery

У меня также есть <input type="button" onclick="doSomething()" /> элемент в моей форме.

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

Я обрабатываю запрос, используя JQuery ajax. Поэтому я должен сделать это с помощью javascript или JQuery.

Можно ли добавить значения к истории конкретного элемента <input type="text" /> с помощью javascript/Jquery .. ??

+0

Nop, не существует какой-либо для добавление значений в историю элемента. Но вы можете поддерживать специальные значения 'array' и' push', чтобы каждый раз пользователь щелкал, а затем потянул назад, когда это необходимо. –

+0

@Joy, но значения в массиве будут терять, когда пользователь обновит страницу. Есть ли альтернатива .. ?? – shashwat

+0

Затем вы добавляете это в файл cookie, если хотите, чтобы это продолжалось между запросами. Вы можете использовать этот плагин https://github.com/carhartl/jquery-cookie –

ответ

2

Вот как вы можете сделать это с помощью HTML5 LocalStorage

$("#tempID").autocomplete({ 
    source: function(req, resp) { 

    var temp = localStorage.getItem('custom_history'); 

    var data = JSON.parse(temp); 
    resp(data); 

} 
}); 


$('#tempID').on('blur', function() { 
    var temp = localStorage.getItem('custom_history'); 

    var data = JSON.parse(temp); 
    if($.trim(this.value).length > 0) 
     data.push(this.value); 

    localStorage.setItem('custom_history', JSON.stringify(data)); 

});

Что я делаю Установка значения в HTML5 Локальное хранилище, когда пользователи удаляются от поля ввода, щелкает в другом месте.

После этого извлечение этого и установка этого в качестве источника для пользовательского интерфейса jQuery завершена.

Вот рабочая скрипку http://jsfiddle.net/joycse06/EBduF/173/

Введите некоторое значение. Нажмите еще где-нибудь. Нажмите еще раз и добавьте другие значения. Обновится скрипка и начнется ввод одного из них и автозаполнения.

UPDATE

Основываясь на своих комментариях, а затем чат окончательный код, он должен быть в этом, я вставляя, если это может кто-то позже

// if we dont set this line then ff will return null, and null.length will throw an error 
if(!localStorage.getItem('custom_history')) 
     localStorage.setItem('custom_history',''); 
$("#test").autocomplete({ 
    source: function(req, resp) { 
     var term = req.term; 
     var temp = localStorage.getItem('custom_history'); 
     var data = []; 
     if(temp.length > 0) 
      data = JSON.parse(temp); 
     var intRegex = /^\d+$/; 
     data = $.map(data,function(val){ 
       if(intRegex.test(val)){ 
        if(val.indexOf(term) != -1) 
         return val; 
        else 
         return null; 
       } 
       else 
        return null; 
      }); 
     resp(data); 

    } 
}); 


$('#save').on('click', function() { 
    var temp = localStorage.getItem('custom_history'); 

     var data = []; 
     if(temp.length > 0) 
     data = JSON.parse(temp); 
     var value = $.trim($('#test').val()); 
     if(value.length > 0){ 
     if($.inArray(value,data) != -1){ 
      //alert('Duplicate'); 
      return; 
     } 

     } 
     data.push(value); 
     localStorage.setItem('custom_history', JSON.stringify(data)); // set item to localStorage 
}); 
+0

Ошибка в вашей скриптовой ошибке - это данные null. Я использую firefox 12.0 @Joy – shashwat

+0

проверить это, он почему-то не работает в скрипке http://joynag.net/demos/localstorage/ Попробуйте это так же, введите что-нибудь, щелкните где-нибудь еще, щелкните назад и добавьте что-то новое затем обновите и начните вводить –

+0

Сообщите мне, если он сейчас работает для вас? –

0

Вы можете использовать localStorage как следующее:

var arr = []; 
$('input#tempID').on('click', function() { 
    arr.push(this.value); 
    localStorage.setItem('history', JSON.stringify(arr)); // set item to localStorage 
}); 

Чтобы получить это значение попробовать,

var temp = localStorage.getItem('history'); 

if(retarr) { // checking that data it stored in localStorage or not, if not exists temp = null 
    var allHistories = JSON.parse(temp); // now you have history 
    console.log(allHistories); 
} 

Я думаю, что нужно что-то вроде autocomplete

+1

Я не думаю, что это то, о чем он просит. –

+0

Я знаю, как сделать запрос ajax при нажатии кнопки. Я хочу знать 'добавлять значения в историю текстовых полей, не отправляя форму с помощью javascript или Jquery', как в вопросе заголовка. – shashwat

+0

@thecodeparadox, но как я покажу их, когда пользователь начнет вводить или дважды щелкнет внутри текстового поля (когда пуст). Пожалуйста, обратитесь к любой хорошей статье, если у вас есть один – shashwat