如何为自动完成功能提供参数?

时间:2015-07-31 13:37:16

标签: jquery jquery-ui autocomplete

以下是我在jQuery.ui之上构建的自动完成功能。它工作得很好。我想做的就是这一行:var targetItem = $("#subject");。目前正如您所见,请将$("#subject")分配给自动填充功能中的'targetItem'变量。

但我希望根据' keyup'来为'targetItem'变量赋值。文本框的事件。简而言之,我尝试过这样的事情:

var target;
   var targetItem2;
    $("input[type=text]").on("keyup",function()
        {
            target = this.id;
            alert(target);
           targetItem2 = $("#"+target);
        });

我把它放在自动完成功能上方,然后分配' targetItem2'到了#target.ctem'变量,但它没有传递值。

有没有办法对这个函数做一些事情,以便可以根据keyup事件或更好的方式分配值,无论如何我可以将参数传递给自动完成函数?

HTML

 <div class="ui-widget">
                 <input id="subject" type="text" name="subject" value="" placeholder="Subject" class="1"/>
  </div>

的jQuery

$.widget('custom.mcautocomplete', $.ui.autocomplete, {
    _renderItem: function(ul, item) {
        var t = '',
            result = '';

        $.each(this.options.columns, function(index, column) {

            t += '<span style="float:left;min-width:' + column.minWidth + ';">' + item[column.valueField ? column.valueField : index] + '</span>'
        });

        result = $('<li></li>')
            .data('ui-autocomplete-item', item)
            .append('<a class="mcacAnchor">' + t + '<div style="clear: both;"></div></a>')
            .appendTo(ul);
        return result;
    }
});
 //ajax starts
    var targetItem = $("#subject");//want to assign value form supplied parameter
    $("document").ready(function(){       
    var data = {
      "action": "test"
    };
    data = $(this).serialize() + "&" + $.param(data);
    $.ajax({
    type: "GET",
    dataType: "json",
    url: "store2.php", //Relative or absolute path to response.php file
    data: data,
    success: function(data) {
      //$("#showPlace").html("<br />JSON: " + data );
     // alert("Form submitted successfully.\nReturned json: " + data["json"]);
    // alert(data);
      // console.log(data);
        var columns = [{
        name: 'level',
        minWidth: '200px'},
        {
        name: 'subject',
        minWidth: '70px'},
        {
        name: 'catid',
        minWidth: '70px'}
        ],

        colors = data;
        var selectThis=targetItem.attr("class");//textbox class determines which item in array to select
        var valueV=targetItem.attr("value");
        targetItem.mcautocomplete({
        showHeader: true,
        columns: columns,
        source: colors,
        select: function(event, ui) {
            // Set the input box's value
            this.value = (ui.item ? ui.item[selectThis] : '');

            //search for nearest value

            // Set the output div's value
            $('#show_subject') && $('#show_subject').text(ui.item ? ('Subject = ' + ui.item[selectThis]) : 'Select a subject');
            return false;
         }
       });
            }
          });

      });

1 个答案:

答案 0 :(得分:0)

实际上,您可以在事件中使用CPen pen; COLORREF color = ::GetSysColor(COLOR_3DDKSHADOW); pen.CreatePen(PS_SOLID, 5, color); dc.SelectObject(pen); dc.Rectangle(&rect); ,而不是尝试提取ID并构建要使用的选择器。您只需将其包装在jQuery中即可。这是一个显示代码和this示例的示例。查看浏览器的日志以查看差异。两者都应该像你期望的那样工作。

https://jsfiddle.net/m7nt39x0/3/

相关问题