1

你好朋友我的<input type="text" id="tempID" />表格中有一个元素

我的表格中也有一个<input type="button" onclick="doSomething()" />元素。

当用户单击按钮时,我想将文本框值添加到文本框历史记录中。

我正在使用 Jquery ajax 处理请求。所以我必须用javascript或Jquery来做。

这是否可以<input type="text" />使用 javascript/Jquery.. 向特定元素的历史添加值??

4

2 回答 2

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 UI 自动完成的源。

这是一个工作小提琴http://jsfiddle.net/joycse06/EBduF/173/

输入一些值。点击其他地方。再次单击返回并添加其他值。刷新小提琴并开始输入其中一个,然后会显示自动完成。

更新

根据他的评论和后来的聊天,他需要的最终代码是这个,如果以后可能会有其他人,我会粘贴

// 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
});
于 2012-05-18T09:28:11.847 回答
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);
}

我认为你需要像自动完成这样的东西

于 2012-05-18T08:28:28.840 回答