2013-09-26 62 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]')不解決 –