2013-09-26 25 views
0

我有2个选择框,一个选择了汽车名称,另一个选择了汽车模型,当我选择汽车名称(e.x. BMW)时,第二个选择框必须更新属于BMW的车型。我用jQuery创建了这个logig。但问题是,我的网页设计师用css3创建了非常酷的选择框设计,因此他需要隐藏输入并选择具有相同ID属性的标签(e.x.id =“car_model”)。当我调用jQuery函数时,它会更新隐藏的输入并使用选项填充它。我可以如何选择id =“car_model”而不是隐藏类型与id =“car_model”相同。通过jQuery在Grails中选择正确的html标记

控制器:

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) 
}); 
} 

编辑:enter image description here

+0

ID应该永远选择是一样的 - 你可以在输入上使用相同的名字,但使用不同的ID,如果圣杯插件要求你有相同的ID,我不会使用它 – Pete

回答

0

html元素的ID应该是唯一的,你可以指定一个类来选择它使用class selector选择。隐藏的领域不会得到选择类,你将能够区分它。

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

你你havee没有其他选择,但与相同ID和不同类型的两个元素,那么你可以通过选择加入tagtype

Live Demo

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

谢谢你的回答,但它没有解决问题 –

+0

在你的问题你提到id = car_model,但它是名称。所以这需要名称上的选择器不在id上。 $('select [name = car_model]')会给你选择 – Adil

+0

同样的问题,$('select [name = car_model]')不解决 –