2015-07-10 86 views
1

需要在隐藏字段中获取所选值的ID,但始终返回undefined。控制器的动作和脚本如下。Jquery UI - 自动完成自定义错误

我在做什么错在这里。我完全是这个UI自动完成的新手。

所以需要帮助来解决这个问题。

('#PanelSearchKeyword').autocomplete({ 
    source: function(request, response) { 
     var params = {}; 
     params.supplieTyperName = document.getElementById('PanelSearchKeyword').value; 
     $.ajax({ 
      type: 'POST', 
      dataType: "json", 
      url: '/Home/GetSupplierTypeNameList', 
      data: AddAntiForgeryToken(params), 
      success: function(data) { 
       var array = data.map(function(element) { 
        return { 
         value: element['SupplierTypeName'], 
         id: element['SupplierTypeId'] 
        }; 
       }); 
       response(array); 
      }, 
      error: function(xhr, ajaxOptions, thrownError) { 
       logError(ajaxOptions, thrownError); 
      } 
     }); 
    }, 
    select: function(event, ui) { 
     $("#SuppTypeId").val(ui.item.SupplierTypeId); // save selected id to hidden input 

     var a = $("#SuppTypeId").val(); 
     alert(a); 
     //return false; 
    }, 
    minLength: 2 
}); 

我的控制器动作看起来像

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public JsonResult GetSupplierTypeNameList(string supplieTyperName) 
    { 
     try 
     { 
      List<SupplierTypeViewModel> supplierTypeNameList = new List<SupplierTypeViewModel>(); 
      supplierTypeNameList = (from supplierType in db.PPSupplierTypes 
            where supplierType.PPSupplierTypeName.ToUpper().StartsWith(supplierTypeName.ToUpper()) 
            orderby supplierType.PPSupplierTypeName 
            select new SupplierTypeViewModel 
            { 
             SupplierTypeId = supplierType.PPSupplierTypeId, 
             SupplierTypeName = supplierType.PPSupplierTypeName 
            }).ToList(); 
      return supplierTypeNameList; 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
     return Json(suppplierTypeResult, JsonRequestBehavior.AllowGet); 
    } 
+0

尝试'ui.item.value'或'ui.item.id' – Tushar

+0

@Tushar我已经尝试过这一点,但结果是相同的“未定义”。 –

+0

你可以创建一个'jsfiddle'演示这个 – Tushar

回答

3

对于到目前为止,我也做了同样........ 鉴于文件

   <script> 
     var name; 
     var id; 
     $(function() { 
      $("#tags").autocomplete({ 
       source: function (request, response) { 
        $.ajax({ 
         type: "POST", 
         url: "<?php echo base_url() . 'dashboard/search'; ?>", 
         dataType: "json", 
         data: {'userA': request.term}, 
         success: function (msgs) 
         { 
          var array = msgs.map(function (element) { 
           return {value: element['name'], id: element['id']}; 
          }); 
          response(array); 
         } 
        }); 
       }, 
       select: function (event, ui) { 
        name = ui.item.value; 
        id = ui.item.id; 
        $("#hotel_id").val(id); 
        $("#hotel_name").val(name); 
       } 

      }); 

     }); 
    </script> 

      <div class="ui-widget"> 
     <label for="tags" style="color:#eee;">Search by hotel name, address or contact.</label> 
     <input placeholder="Select a Hotel..." id="tags" class="form-control"> 
     <input type="hidden" id="hotel_id" /> 
     <input type="hidden" id="hotel_name" /> 
    </div> 

在控制器

  public function search() { 
    if (isset($_POST['userA'])) { 
     $userPart = $_POST['userA']; 
    } else { 
     $userPart = ""; 
    } 

    $result = $this->dbmodel->search($userPart); 
    $list = array(); 

    foreach ($result as $finaldata) { 
     $dataN = $finaldata->name; 
     $dataK = $finaldata->id; 
     array_push($list, $dataN); 
    } 

    if ($userPart != "" && $userPart != NULL) { 
     echo json_encode($result); 
    } 
} 

and in db模型

 function search($value) { 
    $this->db->select('id, name'); 
    $this->db->where("status", "1"); 
    $this->db->where("verification_status", "1"); 
    $this->db->where("suspension_status", "0"); 
    $where = "(name LIKE '%$value%' 
     OR address LIKE '%$value%' OR contact LIKE '%$value%')"; 
    $this->db->where($where); 
    $result = $this->db->get('hotel_info'); 

    return $result->result(); 
} 

希望它会帮助你

+0

如果你想检查它.http://bookingpoints.com –

+0

Hoo尽管对var变量赋值,我直接把值放入一个隐藏的字段对象,那是唯一的区别。我不知道为什么它不可能将价值直接带到隐藏的领域。无论如何现在它的工作。谢谢:) –

+0

它是我的荣幸........,不要忘记注册它 –