2017-12-27 7 views
1

Ich versuche, die Autocomplete jQuery UI-Funktion in einem Bootstrap-modalen Fenster zu implementieren, aber es funktioniert nicht.jQuery UI Autocomplete in MVC modalen Fenster

screenshot module console debug

Nehmen Sie die Schritte nicht eine Teilansicht, die auch bereits implementieren jQuery CSS-Stile, die Wahrheit für mich arbeitet in vollen Ansichten Rückkehr, aber warum, wenn ein modales Fenster nicht nicht nennen? irgendeine Hilfe für mich?

My Script von wo ich nenne das modale Fenster:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("body").on("click", "a.dialog-window", null, function (e) { 
      e.preventDefault(); 
      var $link = $(this); 
      var title = $link.text(); 
      $('#AgregarProducto.modal-title').html(title); 
      var url = $(this).attr('href'); 
      if (url.indexOf('#') == 0) { 
       $('#AgregarProducto').modal('show'); 
      } 
      else { 
       $.get(url, function (data) { 
        $('#AgregarProducto .te').html(data); 
        $('#AgregarProducto').modal(); 
       }).success(function() { $('input:text:visible:first').focus(); });  
      } 
     }); 
    }); 
</script> 

Mein Modal Windows-:

<div class="form-group">   
     <div class="col-md-10"> 
      <input type="text" name="producto" id="producto" />    
     </div> 
    </div> 

    @section Scripts {  

     @Scripts.Render("~/bundles/jqueryval")  
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script> 
    <script src="~/Scripts/jquery-ui-1.12.1.js"></script> 

    <script> 
      $(function() { 
       $("#producto").autocomplete({ 
        source: "/Salidas/BuscarProducto" 
       }); 
      }); 
    </script>  
    } 

Mein Controller:

public JsonResult BuscarProducto(string term) 
    { 
     using (DataContext db = new DataContext()) 
     { 
      var resultado = db.Productos.Where(x => x.v_Nombre.Contains(term)).Select(y => y.v_Nombre).Take(5).ToList(); 

      return Json(resultado, JsonRequestBehavior.AllowGet); 
     } 
    } 
+0

Können Sie versuchen, '$ (" # producto "). Autocomplete" nach dem Modal angezeigt wird? jQuery ist möglicherweise nicht in der Lage, die richtige DOM-Manipulation durchzuführen, bis das Modal vollständig angezeigt wird. Sie müssen das 'showed.bs.modal'-Ereignis behandeln. – kettch

+0

Würden Sie vorschlagen, dass ich die Änderung im Skript, das das Modal aufruft, vorschlage? oder die Änderung im Skript innerhalb des Modals vornehmen? @kettch –

+0

ich es von der $ (document) .ready Funktion an der Spitze tun würde, kurz bevor Sie rufen 'show' ist in Ordnung. – kettch

Antwort

0

Versuchen einen Event-Handler für shown.bs.modal hinzufügen bevor Sie das Modal selbst zeigen.

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("body").on("click", "a.dialog-window", null, function (e) { 
      e.preventDefault(); 
      var $link = $(this); 
      var title = $link.text(); 
      $('#AgregarProducto.modal-title').html(title); 
      var url = $(this).attr('href'); 
      if (url.indexOf('#') == 0) { 
       $('#AgregarProducto').on('shown.bs.modal', function() { 
        $("#producto").autocomplete({ 
         source: "/Salidas/BuscarProducto" 
        }); 
       } 
       $('#AgregarProducto').modal('show'); 
      } 
      else { 
       $.get(url, function (data) { 
        $('#AgregarProducto .te').html(data); 
        $('#AgregarProducto').modal(); 
       }).success(function() { $('input:text:visible:first').focus(); });  
      } 
     }); 
    }); 
</script> 
+0

Ich verstehe Ihre Lösung, aber es funktioniert nicht für mich .... keine Hilfe für mich? –

+0

Was speziell isn 't funktioniert? Was ist das beabsichtigte Verhalten und was ist das tatsächliche Verhalten? Wissen Sie auch, ob der' showed.bs.modal 'Ereigniscode ausgeführt wird? Fügen Sie Ihren aktualisierten Code am Ende Ihrer Frage hinzu, damit wir schauen sie es in Zusammenhang kann. – kettch

+0

Insbesondere wird der Autocomplete nicht, das Verhalten, das erwartet wird, ist, dass in meinem modalen Fenster ... die Namen der Produkte und dem tatsächlichen Verhalten vorgeschlagen werden ... er nichts vorschlagen Ich habe ein Bild für weitere Details angefügt (Frage bearbeiten) @ketch –