我有點遺憾。我們有一個基於業務規則和SQL數據動態創建的asp.net問卷。有很多動態控件的ASP.NET頁面上的JQuery
問卷是一個動態表格,最多可以有21個問題,根據回答(單選按鈕yes,no,進行中,NA)和更多業務規則,需要發生不同的事情。
有時候,其他問題顯示在右欄中,或者它可能有一個文本框,用戶需要輸入附加數據,有時只需要註釋和響應說明,我還根據以下內容更改單元格的顏色響應。
它已經變成了一個JavaScript的噩夢。目前,我們正在爲每個單選按鈕添加一個onclick事件,並傳入適用於該單選按鈕的一些業務規則。
我最大的問題是所有的控件都是根據行號,響應等給出的id。所以在javascript函數中,我們試圖根據所需信息被傳遞給onclick事件的函數。
我們的代碼雖然有效,但它不是很優雅,很可能會成爲維護的噩夢。在我看來,使用JQuery必須有更好的方法。我只是不知道從哪裏開始。我希望這是有道理的,我希望有人有一個建議,或者我可以用來重寫這個混亂的東西。
這是一個非常非常縮短的JavaScript版本。
function radioButtonListOnClick1(buttonValue, QuestionNumber, hasInput, hasSubs, hasAdditional, isAdditional)
{
var ClientID;
var HidField = $("#HiddenFieldClientID");
if (HidField.length == 1)
{
ClientID = HidField[0].value + "_";
}
var ColumnName = ClientID + "radioQuestionColumn" + QuestionNumber;
if (buttonValue == "InProgress")
{
document.getElementById(ColumnName).className = 'tdInProgress';
}
if ((buttonValue == "Yes") || (buttonValue == "NotApplicable"))
{
document.getElementById(ColumnName).className = 'tdYes';
}
if (buttonValue == "No")
{
document.getElementById(ColumnName).className = 'tdNo';
}
}
listItem.Attributes.Add("onclick", "radioButtonListOnClick('" + Response + "', '" + QuestionNumber + "', '" + hasInput + "', '" + hasSubs + "', '" + hasAdditional + "', 'no');");
下面是一個問題的例子,不同回答的規則可能看起來像。
1)你有沒有替代用戶的名字,可以在你不在的時候填寫你的名字? 是 - 顯示文本框和文本 - 「請輸入員工姓名」(列顏色爲白色) 否 - 顯示指向共享點文檔的鏈接,說明爲什麼需要此選項以及應該選擇誰(列顏色爲紅色) 正在進行 - 列顏色爲黃色