【问题标题】:jQuery autocomplete and handling the value / label issuejQuery 自动完成和处理值/标签问题
【发布时间】:2012-01-20 06:53:07
【问题描述】:

我正在尝试使用 jQuery 自动完成功能。我已经指定了一些数据,但是当我在下拉列表中选择一个项目时,它总是将值推送到元区域元素中。我要标签。这个怎么做?试图让它在#meta-area 中显示标签而不是值。

HTML:

 ...
 area:<input type='text' size='20' id='meta-area' />
   <input type='hidden' id='meta_search_ids' value='' />
 ...

JavaScript:

$(document).ready(function(){
    var data =[
        {'label':'Core','value':1},
        {'label':' Selectors','value':2},
        {'label':'Events' ,'value':3}]; 

        $("#meta-area").autocomplete({source:data,
            select: function(e, ui) {
                $("#meta_search_ids").val(ui.item.value);
                // this part is not working
                //$(this).val(ui.item.label);
                $('#meta-area').text('this is what I want');
            }
        });
    //alert("this loaded");
});

【问题讨论】:

    标签: jquery ajax jquery-ui jquery-ui-autocomplete


    【解决方案1】:

    select 事件的默认操作将ui.item.value 放在input 中。您需要在事件处理程序中使用preventDefault

    $(document).ready(function(){
        var data =[
            {'label':'Core','value':1},
            {'label':' Selectors','value':2},
            {'label':'Events' ,'value':3}]; 
    
        $("#meta-area").autocomplete({
            source:data,
            select: function(e, ui) {
                e.preventDefault() // <--- Prevent the value from being inserted.
                $("#meta_search_ids").val(ui.item.value);
    
                $(this).val(ui.item.label);
            }
        });
        //alert("this loaded");
    });
    

    示例: http://jsfiddle.net/UGYzW/6/

    【讨论】:

      【解决方案2】:

      你的意思是?将“区域:”更改为新的?

      <span id='area'>area</span>:<input type='text' size='20' id='meta-area' />
         <input type='hidden' id='meta_search_ids' value='' />
      
      
      <script>
       $(document).ready(function(){
        var data =[{'label':'Core','value':1},
           {'label':' Selectors','value':2},
           {'label':'Events' ,'value':3}]; 
       $("#meta-area").autocomplete({source:data,
         select: function(e, ui) {
           $("#meta_search_ids").val(ui.item.value);
          // working like this?
          $('#area').text(ui.item.label);
          // $('#area').text('this is what I want');
          }
       });
         //alert("this loaded");
       });
       </script>
      

      【讨论】:

      • 抱歉 - 没听懂您的意思。现在,它正在使用 value 变量填充元区域,我想要标签。
      • 有可能得到这样的标签$('#meta-area').text(ui.item.label);。它有效。
      猜你喜欢
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 2010-12-04
      • 2011-08-08
      相关资源
      最近更新 更多