2016-03-24 18 views
0

Bir sayfada bir metin kutusu için otomatik tamamlama kurmaya çalışıyorum, ancak çalışamam.MVC jQuery otomatik tamamlanmadı

benim desteler yapılandırılmış: denetleyici olarak

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
      "~/Scripts/jquery-{version}.js", // version is 2.2.1 
      "~/Scripts/jquery-ui-{version}.js" // version is 1.11.4 
)); 

, kullanıcıların listesini döndürür işlevi. bu nedenle, aşağıdaki XXX bir tamsayı ile değiştirilir

public JsonResult GetInternalUsers() { 
    var results = db.Users 
     .Select(x => new { 
      UserId = x.UserId, 
      UserName = x.UserName, 
     } 
    ).ToList(); 

    return Json(results, JsonRequestBehavior.AllowGet); 
} 

düzenleyici kutuları dinamik olarak eklenir (yani, Attendees0).

<input id="AttendeesXXX" type="text" name="Attendees[X]" class="form-control col-md-6" /> 

Ve nihayet, gerçek senaryo:

$('#Attendees' + internalAttendees).autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: '@Url.Action("GetInternalUsers", "Events")', 
      type: 'GET', 
      async: false, 
      success: function (data) { 
       response($.map(data, function (item) { 
        return { label: item.UserName, value: item.UserId } 
       })) 
      } 
     }); 
    }, 
    select: function (event, ui) { 
     $('#Attendees' + internalAttendees).val(ui.item.label); 
     return false; 
    }, 
    minLength: 1 
}); 

kısım bana atıyor en ı $('#Attendees' + internalAttendees) yazdığınızda, Intellisense autocomplete getirir asla, bu yüzden bile bilmiyorum ki Doğru kütüphaneleri dahil ediyorum.

Neyi yanlış yaptığımı biliyor musunuz?

+0

Merhaba @Dan Şampanya, geliştirici araçlarını f12 açmayı ve 'ağ' sekmesini tıklamayı ve daha sonra bu sayfayı yeniden yüklemeyi deneyin. Jquery UI'den önce jquery yükleniyor mu? JQuery IS'nin ilk yüklemesini onaylayabilirseniz konsolunuz ne diyor? –

+0

@ mwwallace8 Evet, jquery, ui kitaplığından önce yükleniyor. –

+0

Ve konsol ne diyor? Komut dosyası çalışmazsa/otomatik tamamlama tanımıyorsa, tarayıcı konsolunda bir hata olduğunu varsayalım. –

cevap

1

Kontrol edilmesi gereken birkaç şey var. Yapmam

İçimden bir kesme noktası ayarlamak ve bir değere sahip olmadığını görmek için $ myElement denetleyebilmesi için bu değişken

var $myElement = $('#myElement'); 

olarak benim seçici ilan olduğunu.

Ardından, bir kesme noktası ayarlayın ve dinamik olarak eklenen öğelerden beri kodunuza gerçekten vurduğunuzdan emin olun. Belgedeki kod, öğe oluşturulmadan önce gerçekleşirse, olay öğeye eklenmez. Öğeyi eklemeniz ve sonra ekleyeceğiniz kodu çalıştırmanız gerekebilir.

Gerçek çağrı doğru görünüyor, eğer denetleyicinizde bir kesme noktası belirlerseniz, vuruluyor mu?

Ama kafam karıştı. Bu neden otomatik tamamlama? Ajax çağrısının "data" parametresinde bir değer vermek istemiyor musunuz? Şu anda olduğu gibi, cevabınızı hiç filtrelemiyorsunuz.

-1
> *** 
    > 
    > > for Mvc Artitecture you must delete already imbended 
    > > @Scripts.Render("~/bundles/Jquery") and 
    > > @Scripts.Render("~/bundles/Jquaryval") on all .cshtml files at the 
    > > end and for also views/Shared/_layout.cshtml at the end and put our 
    > > jaquery suitable files on his suitables .cshtmls files in head...and 
    > > lets enjoy. put on head..these files 
    > > 
    > > <link href="~/Content/jquery-ui-1.10.4.custom.min.css" 
    > > rel="stylesheet" type="text/css" /> <script 
    > > src="~/Scripts/jquery-1.10.2.js" type="text/javascript"></script> 
    > > <script src="~/Scripts/jquery-ui-1.10.4.custom.min.js" 
    > > type="text/javascript"></script> 
    > 
    > *** 


//////////////////////code behind download button////////////////////// 

Response.ContentType = "Application/pdf"; 
      Response.AppendHeader("Content-Disposition", "attachment; filename=help.pdf"); 
      Response.TransmitFile(Server.MapPath("~/doc/help.pdf")); 
      Response.End();