ASP.NET MVC y JQuery - Поле комбинированного списка Como capturar eventos de cualquier

Podrían echarme una mano en lo siguiente, estoy trabajando подставляют ASP.NET MVC, para capturar el texto del combo seleccionado y ponerlo al modelo utilizo un hidden, алгоритм танго Комо esto:

$(function () {
  $("#datosCombo").change(function () {
    var selTypeText = $("#datosCombo option:selected").text();
    $("#DatosComboDescripcion").val(selTypeText);
  });
});

<select class="form-control" data-val="true" data-val-number="El campo debe ser un número." data-val-required="El campo es obligatorio." id="datosCombo" name="datosCombo">
  <option value="5">100000211639</option>
  <option value="6">200000211639</option>
  <option value="7">300000211639</option>
  <option value="8">400000211639</option>
</select>
<input id="datosComboDescripcion" name="datosComboDescripcion" type="hidden" value="100000211639">

Todo funciona correctamente, скрытая переменная ми cada que selecciono un elemento del combo реализовывает su доблесть (es el objetivo).

El problema es el siguiente: танго СИ 10 комбинаций tendría que tener 10 Сценариев y eso не я parece muy mantenible.

Lo que quiero llegar hacer es: комбинация Tener un Script genérico que detecte el evento de cualquier y lo asigne una переменная, así si es que tengo 10 комбинаций, todos estos комбинации текст agarren automáticamente esta función cuando se dispare su evento y asignen al hidden su.

Nota. Si es que sirve de algo el hidden siempre tendrá el nombre del combo mas descripción: "NombreCombo" + "Descripcion"

1
задан 10.01.2017, 18:09
0 ответов

Для этого ты можешь получать идентификацию изогнутого, хранить это в переменной, и искать идентификацию неудара в лунку hidden с хранившейся стоимостью.

Пример: https://jsfiddle.net / oaqsafux / 1 /

JQUERY:

$(document).ready(function() {
    $("select").on("change", function() {
        var id = $(this).attr("id");
        var txt = $(this).find("option:selected").text();
        $("#"+id+"Descripcion").val(txt);
    });
});

Когда select изменится, ты получаешь Ваш пойдите, тогда ты ищешь неудар в лунку hidden, у которого, как ты упоминаешь о нас, будет этот id+Descripcion, и ты добавляешь эту стоимость текста.

PD: не замечай в мой комментарий в вопросе, не, который приходил мне в голову. PD2: не повторяй id's, это что-то, что jquery, когда он хочет искать что-то, конечно тебе возвратит первый, что он найдет, и он откажется от любого другого.

0
ответ дан 03.12.2019, 17:46
  • 1
    Это $(this).val() только достанет value opció n выбранная и не текст. Привет :D –  10.01.2017, 17:55
  • 2
    @JuankGlezz Спасибо, я pasó! Сейчас я обновляю ответ! –  10.01.2017, 17:59
  • 3
    Большое спасибо это та, которая больше подала меня, и я применил ее, относительно идентификаций, принимая во внимание, что я работаю с ASP.NET MVC, и что эти HTML' s они производятся на основании класса (модели) я верю в то, что когда бы то ни было repitirian ID' в. Сердечный привет всем. –  10.01.2017, 23:18
  • 4
    Посмотрим могут рука с этим больше (действительно я плохой с JQuery, я больше Back), что в загруженный pá gina, эти hidden считали уже распределенным текст, соответствующий первому элементу изогнутого. –  10.01.2017, 23:52
  • 5
    @RSillerico ты можешь делать другой сходный справедливый рукописный шрифт, загрузив pá gina $(document).ready(); с .each(function() { /*código aquí*/ }) вместо .on("change") –  11.01.2017, 10:05

Я использовал бы классы так как id в jQuery всегда он получит первого с этим id и он оставил бы твою функцию таким образом:

$(function () {
  $(".datosCombo").change(function () {
    var selTypeText = $('.datosCombo option').eq($(this).val()-1).text()
    $('.datosCombo').siblings('.datosComboDescripcion').val(selTypeText);
  });
});

Которая состояла бы обязательным способом в том, чтобы поддерживать классы datosCombo в select и input класс datosComboDescripcion. И также поддерживать эти отделенные элементы уже было из-за одного div чтобы избегать вводить стоимость в одном input неправильный.
Сейчас я объясняю тебе, как он достал бы стоимость:

  1. Я получаю стоимость, выбранную с $(this).val() что возвратил бы value option выбранный я отрицаю один у него, так как для элементов он всегда начинается в 0, и так выбирать правильного. (this он ссылается в изогнутый выбранный не на все)

  2. Получать текст выбора, выбранного с $('.datosCombo option').eq().text()

    $('.datosCombo option').eq($(this).val()-1).text()
    
  3. Сейчас мы ищем в input это должен быть из-за силы элемент, выровненный в select и мы это получаем с .siblings('.datosComboDescripcion')

  4. Мы вводим стоимость в input select использованный

    $('.datosCombo').siblings('.datosComboDescripcion').val(selTypeText);
    

Пример Функционируя:

$(function () {
  $(".datosCombo").change(function () {
    var selTypeText = $('.datosCombo option').eq($(this).val()-1).text()
    $('.datosCombo').siblings('.datosComboDescripcion').val(selTypeText);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <select class="form-control datosCombo" data-val="true" data-val-number="El campo debe ser un número." data-val-required="El campo es obligatorio." id="datosCombo" name="datosCombo">
    <option value="5">100000211639</option>
    <option value="6">200000211639</option>
    <option value="7">300000211639</option>
    <option value="8">400000211639</option>
  </select>
  <input class="datosComboDescripcion" name="datosComboDescripcion" type="hidden" value="100000211639">
</div>
<div>
  <select class="form-control datosCombo" data-val="true" data-val-number="El campo debe ser un número." data-val-required="El campo es obligatorio." id="datosCombo" name="datosCombo">
    <option value="5">100000211639</option>
    <option value="6">200000211639</option>
    <option value="7">300000211639</option>
    <option value="8">400000211639</option>
  </select>
  <input class="datosComboDescripcion" name="datosComboDescripcion" type="hidden" value="100000211639">
</div>
0
ответ дан 03.12.2019, 17:46

я надеюсь, что они подают тебя с изменениями, которые я сделал ему

    $(".datosCombos").change(function () {
        var ref = $(this).data('ref');
        var selTypeText = $("#"+ this.name +" option:selected").text();
        $("#" + ref).val(selTypeText);
    });


<select class="form-control datosCombos" data-ref="datosComboDescripcion" data-val="true" data-val-number="El campo debe ser un número." data-val-required="El campo es obligatorio." id="datosCombo" name="datosCombo">
  <option value="5">100000211639</option>
  <option value="6">200000211639</option>
</select>
<select class="form-control datosCombos" data-ref="datosComboDescripcion2" data-val="true" data-val-number="El campo debe ser un número." data-val-required="El campo es obligatorio." id="datosCombo2" name="datosCombo2">
  <option value="7">300000211639</option>
  <option value="8">400000211639</option>
</select>
<input id="datosComboDescripcion"  name="datosComboDescripcion" type="hidden" value="100000211639">
<input id="datosComboDescripcion2"  name="datosComboDescripcion2" type="hidden" value="100000211639">
0
ответ дан 03.12.2019, 17:46
  • 1
    Я предлагаю тебе объяснять немного больше, причину эти изменения, в которых они помогают ему и т.д... Привет –  10.01.2017, 18:06
  • 2
    ú nicamente convertí gené богатая funció n и я добавил класс и восходи - ref в combobox к полю hidden. не были большими изменениями. –  10.01.2017, 18:11
  • 3
    Así она не была большой вещью это хорошо объяснять ему, потому что, ты можешь уберегаться много вопросов будущих пользователей, и становится более полным твой ответ –  10.01.2017, 18:15

Теги

Похожие вопросы