2015-11-16 2 views
0

Мне нужно передать значение в текстовое поле, но это текстовое поле невозможно для записи непосредственно пользователем. Я расчет стоимости с использованием Джейсона:Передайте значение в текстовое поле с помощью mvc 5

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#txtid").change(function() { 
      $.ajax({ 
       url: '/CommissionsFinals/GetTarifa', 
       type: 'GET', 
       contentType: "application/json; charset=utf-8", 
       dataType: 'json', 
       data: { clientID: $("#DDLCliente").val(), consultorID: $("#DDLConsultor").val() }, 

       success: function (tarifa) { 
        //response(tarifa. 
        $('#txtid').val(tarifa).autocomplete 

       }, 
       error: function() { 
        alert('Error!'); 
       } 
      }); 

     }) 
    }); 

Текстовым поле меняет свое значение при попытке ввода значения diferente. Значение вычисляется по 2 параметрам (clientId, consultorId), которые выбираются в двух разных DropDownLists. Как получить значение автоматически после выбора этих 2 значений из DropDownList?

<th> 
    @Html.DropDownListFor(m =>m.ManagerId, new SelectList(ViewBag.Manager, "ManagerId", "NomeCompleto"), "Seleccione o Manager", new { @class = "form-control", @id = "DDLManager" }) 
</th> 
<th> 
    @Html.Label("Consultor", htmlAttributes: new { @class = "control-label col-md-2" }) 
</th> 
<th> 
    @Html.DropDownListFor(m => m.ConsultorId, new SelectList(ViewBag.Consultor, "ConsultorId", "NomeCompleto"), "Seleccione o Consultor", new { @class = "form-control", @id = "DDLConsultor" }) 
</th> 
+0

Непонятно, что вы спрашиваете. В вашем представлении даже нет текстового поля. –

+0

'@ Html.LabelFor (модель => model.TarifaId, htmlAttributes: новый {@class = "контроль метки Col-мкр-2"}) @ Html.TextBoxFor (модель => model.TarifaId , new {@id = "txtid"}) ' – RRodrigues

+0

Редактировать свой вопрос с помощью кода (а не в комментариях). И что делает ваш «GetTarifa» и что он возвращает? (код, который вы указали, даст вам ошибки в консоли браузера). И что вы подразумеваете под _ ", но это текстовое поле невозможно записывать непосредственно пользователем" _? Это доступно для редактирования, потому что вы не сделали это только для чтения. –

ответ

0

Является ли обратный вызов успеха от аякса вообще? $ ('# txtid'). Val (tarifa) должен работать, но, возможно, этот код не достигнут. Вы можете проверить это с помощью точки останова/предупреждения или sth. Кроме того, я вижу одно отличие от моих вызовов ajax, я обычно использую типа: «POST», и это работает для меня.

+0

Я получаю значение, которое хочу, но только после того, как я попытаюсь ввести совершенно другое значение и щелкните за пределами текстового поля. – RRodrigues

+0

Я вижу вашу ошибку, вы привязываете функцию ajax к событию CHANGE вашего текстового поля, но на самом деле это должно быть связанный с событием CHANGE вашего второго раскрывающегося списка! строка 3 ($ ("# txtid"). change (function() {), измените txtid для DDLConsultor. Кроме того, вы можете привязать ее к обоим выпадающим спискам и проверить, имеют ли они оба действительное значение через js, поскольку @ user5566280 предлагает в сообщении ниже –

+0

Я не понял, но это то, что у меня есть: [ссылка] (http://s22.postimg.org/y5e0mgrdt/image.png) [ссылка] (http://s22.postimg.org /uki538mu9/image.png) – RRodrigues

0

Вы можете обрабатывать событие изменения выпадающий в Javascript с этим

$("#test").change(function() { 
    alert("do you stuff"); 
}); 

и проверить проверку на два списка выбран или нет, и, наконец, вызывается метод Ajax (JQuery), чтобы отправить выбранное значение в контроллер.

0

Непонятно, что вы хотите сделать. Если вы спрашиваете о том, как получить выбранное значение из раскрывающегося списка, вы можете это сделать.

$('#ConsultorId').on('change', function() { 
     var consultorId = $('#ConsultorId').val(); 
    });