2011-08-09 43 views
1

我有一個jQuery模板,有N個單選按鈕,我需要選擇單選按鈕,其值是從外部html文件(使用jQuery.tmpl()方法)加載模板後傳遞的值。在沒有多個{{if}},{{else}}語句,重複代碼和選擇器的模板中,是否有選擇模板中單選按鈕的好方法?jquery模板選擇

回答

3

您的數據以什麼格式從服務器返回?如果它是一個JSON數組,你能做這樣的事嗎?

HTML:

<script id="myTemplate" type="text/html"> 
    <input type="radio" value="${value}"{{if selected}} checked{{/if}}>${name}</input><br /> 
</script> 

<div id="myDiv"> 
</div> 

的javascript:

var myData = [ 
    {name: 'test 1', value : 'radio1', selected : false}, 
    {name: 'test 2', value : 'radio2', selected : false}, 
    {name: 'test 3', value : 'radio3', selected : true}, 
    {name: 'test 4', value : 'radio4', selected : false} 
]; 

$('#myTemplate').tmpl(myData).appendTo('#myDiv'); 

http://jsfiddle.net/JbTwB/1/

1

如果你有所需的無線電的值,你可以這樣做:

jInstance.find('input[value=' + desiredValue + ']').attr('checked', true); 

這假定jInstance是模板的新創建的副本,而desiredValue準確的值相匹配您希望預先選擇的單選按鈕。

如果您只知道部分值,則可以使用其他jQuery選擇器來定位該輸入。

如果您正在尋找更爲一般的「表單預填充」例程,您需要建立一些格式來存儲預填充值集合以及從該格式到模板的映射。但它可以做到,也不一定那麼難。

+0

我寫了沒有選擇!我有一個太大的文件(控制器),加載大量的模板(視圖),我試圖刪除多餘的選擇器。 – 2xMax

+0

爲了操作DOM元素,您需要獲取對節點的引用。生成該引用將需要:ID(最快,但帶有唯一性約束)或更廣義的選擇器。除非你想把標記作爲一個巨大的字符串來處理,或許用正則表達式。哪個表現糟糕而且非常脆弱。使用選擇器將避免使用重複的代碼和大量的「if/else」塊。 – Tom

+0

也許您可以將模板請求中的所需值傳遞給服務器,並且服務器可以在發送響應之前修改生成的標記。但是這種方法不是基於JavaScript的,您需要重新標記問題才能獲得答案。 – Tom