2013-09-26 1 views
0

У меня есть 2 коробки выбора, один с названиями автомобилей и второй с моделями автомобилей, когда я выбираю название автомобиля (например, BMW), второе поле выбора должно обновляться с моделями автомобилей, принадлежащими BMW. Я создаю этот логиг с помощью jQuery. но проблема в том, что мой веб-дизайнер создает действительно классный дизайн коробки с css3, и для этого ему нужен скрытый ввод и выберите тег с идентичным атрибутом ID (e.x. id = "car_model"). и когда я вызываю функцию jQuery, она обновляет скрытый ввод и заполняет его параметрами. как я могу выбрать select с id = "car_model" вместо скрытого типа с тем же id = "car_model".Выберите правильный тег html через jQuery в Grails

Контроллер:

class HomeController { 

def index() { 
    def cars = Car.list(); 
    render (view: '/index', model:[cars:cars]) 
} 

def getModels(params) { 
    def models = Models.findAll { 
     car.id == params.id 
    } 
    println(models) 
    withFormat { 
     html { 
      render(template:'/select',model:[model:models]) 
     } 
     json { 
      render models as JSON 
     } 
    } 
} 

}

вид:

<div class="row field_select"> 
       <label class="label_title">Select Maker:</label>      
       <g:select class="select_styled" name="car_maker" from="${cars}" 
        optionKey="id" 
        optionValue="name" 
        noSelection="['':'- Choose a car -']" 
        onchange="${remoteFunction(
         action:'getModels.json', 
         onSuccess:'getCarModels(data)', 
         params:'\'id=\' + this.value')}"/> 

      </div> 
      <div class="row field_select" > 
       <label class="label_title">Select Model:</label> 
       <select class="select_styled" name="car_model"></select> 
      </div> 

JQuery:

function getCarModels(data) { 
var $element = $('#car_model'); 
$element.empty(); 
$.each(data, function(id, modelName) { 
    var option = $('<option/>').val(id).text(modelName); 
    $element.append(option) 
}); 
} 

EDIT: enter image description here

+0

Идентификаторы должны никогда быть одинаковым - вы можете использовать одно и то же имя на входах, но использовать разные идентификаторы, если плагин Grail требует, чтобы у вас были идентичные идентификаторы, я бы не использовал его – Pete

ответ

0

Идентификатор html элементов должен быть уникальным, вы можете назначить класс для выбора, чтобы выбрать его с помощью class selector. Скрытое поле не получит класс выбора, и вы сможете его отличить.

var $element = $('.selectclass'); 

Вы не havee нет другого выбора, кроме как имеющих два элемента с одинаковым идентификатором и другим типом, то вы можете выбрать путем добавления type из tag в селекторе

Live Demo

var $element = $('select[name=car_model]'); 
+0

Спасибо за ответ, но это не решило проблему. –

+0

В вашем вопросе вы упомянули id = car_model, но это имя. Поэтому для этого требуется, чтобы селектор не был указан по имени. $ ('select [name = car_model]') даст вам выбор, который вы выбрали для – Adil

+0

той же проблемой, $ ('select [name = car_model]') не разрешен –

 Смежные вопросы

  • Нет связанных вопросов^_^