2012-02-28 54 views
0

我已經構建了一個函數,使用jQuery將包含一些輸入(如文本框,複選框和一個按鈕)的新行插入表中。動態地在表中插入輸入的行

這是我的代碼:

$('#AddEntry').click(function() { 
    var lastTrClass = $('tr:last').attr('class'); 

    var textBoxTitle = '<input id="titleid" type="text" value="" style="width: 100%; vertical-align: middle">'; 

    var textBoxStartDate = '<input id="StartDate" type="text" class="required DatePicker" value="" style="width: 100%; vertical-align: middle">'; 

    var checkBoxSync = '<input id="Sync" type="checkbox" checked="checked" disabled="disabled" value="true" style="vertical-align: middle">'; 

    var lastDate = '<input id="LastSyncDate" class="required DatePicker" type="text" value="" style="width: 100%; vertical-align: middle">'; 

    var buttonEdit = '<button id="btnEditar" class="EditButton icon_only text_only" style="vertical-align: middle;" type="button">Editar</button>'; 

    if (lastTrClass == 'gradeA odd') { 
     $('#DataTable > tbody:last').append("<tr class='gradeA even'><td>#</td><td>" + textBoxTitle + "</td><td>" + textBoxStartDate + "</td><td>" + checkBoxSync + "</td><td>" + lastDate + "</td><td>" + buttonEdit + "</td></tr>"); 
    } 
    else { 
     $('#DataTable > tbody:last').append("<tr class='gradeA odd'><td>#</td><td>" + textBoxTitle + "</td><td>" + textBoxStartDate + "</td><td>" + checkBoxSync + "</td><td>" + lastDate + "</td><td>" + buttonEdit + "</td></tr>"); 
    } 
}) 

正如你可以看到在我的代碼,我產生輸入到var,但我的問題是,這是否是安全的。我的代碼容易受到JS注入或類似的東西?有一個更好的方法嗎?

+3

與將元素附加到DOM的其他方式一樣安全。 – j08691 2012-02-28 17:14:32

+0

代碼中的「var」僅在函數中作用並且是私有的。 – charlietfl 2012-02-28 17:25:30

+0

是的「變種」範圍只是在功能 – 2012-02-28 17:29:13

回答

1

所有這些都發生在客戶端上,所以你的代碼應該沒問題。儘管你可能想要查看客戶端模板,但是你可以完全取消這些變量,編輯html會更愉快。當我需要從javascript渲染相對複雜的東西時,我使用jqote

+0

非常有趣的@ coalvilledave,檢查jqote。謝謝 – 2012-02-28 17:31:11

+0

記得投我一票,如果jqote爲你做的工作! – coalvilledave 2012-02-29 12:50:05

+0

對不起,我需要獲得至少15個投票的聲望 – 2012-02-29 18:30:57