2017-09-01 141 views
0

情況概述:檢查單選按鈕

有與用於過濾的記錄數輸入一個HTML頁面。
帶有記錄的表格由經典的asp頁面繪製。
每行都有一些值顯示在可編輯的輸入元素中,用戶可以修改和提交。 其中一些值總是爲0或1,所以我試圖做的是通過使用單選按鈕而不是文本框來顯示此值,從而使用戶的生活更輕鬆一些。

所以我想的單選按鈕

<td> 
    <input type="text" id="hidden_isDeleted" value="<%=rs("isDeleted")%>"> 
    <input type="radio" class="form" name="isDeleted" id="isDeletedNo" value="0"> 
    <input type="radio" class="form" name="isDeleted" id="isDeletedYes" value="1"> 
</td>  

根據以下記錄值

<%= rs("isDeleted") %> 

我至今嘗試過檢查:
我第一次嘗試是寫一個jQuery腳本來完成這項工作:

$(document).ready(function(){ 
    if ($(#hidden_isDeleted).val() == 0) { 
    $("#isDeletedNo").prop("checked", true) 
    } 
    else { 
    $("#isDeletedYes").prop("checked", true) 
    }  
}); 

我的第二個想法是讓jQuery離開,因爲我還是一個新手,並且使用一個簡單的javascript函數,這個函數將被無線電本身的一個<body onload="checkIfDeleted()">事件調用。

function checkIfDeleted() { 
    if ($(#hidden_isDeleted).val() == 0) { 
    document.getElementById("isDeletedNo").checked = true; 
    } 
    else { 
    document.getElementById("isDeletedYes").checked = true; 
    } 
} 

<body onLoad="checkIfDeleted()">執行得太快嗎?或者至少在檢索記錄集之前?

我使用隱藏字段的原因是首先檢索值,然後給用戶選擇其他廣播的機會,從而改變提交時的值。我現在可能有更好的方法來做到這一點,但這是我首先想到的。

我最終什麼事做:

<td> 
     <input type="radio" class="form" name="isDeletedRadio" id="in_isDeleted" value="0" <% If rs("isDeleted") = CLng(0) Then response.write("checked") End If%> >Έγκυρη 
     <input type="radio" class="form" name="isDeletedRadio" id="in_isDeleted" value="1" <% If rs("isDeleted") = CLng(1) Then response.write("checked") End If%> >Άκυρη 
    </td> 

而且,當時間來更改寫入到數據庫中,我檢索使用該電臺的名字,就像在選定的無線價值即: $('input[name="isDeletedRadio"]:checked').val();

它即使我不喜歡那麼多的單選按鈕VBScript的存根,所以如果任何人有一個更好的主意,我會密切關注這個問題一個很好的和簡單的方法。

+0

你需要什麼隱藏的領域?爲什麼不使用服務器端代碼已經在右邊的單選按鈕上動態輸出'checked'屬性? – CBroe

+0

我編輯了我的問題,我希望它回答你的問題。 – Karapapas

+1

_「,然後給用戶選擇其他無線電的機會,從而改變提交時的值」_ - 以及爲什麼需要一個隱藏的字段?您的單選按鈕將發送0或1,具體取決於用戶選擇的內容(或您的預選),不需要隱藏字段。 – CBroe

回答

2

執行得太快嗎?或者至少在檢索記錄集之前?

不,該函數將在頁面加載完成後觸發。記錄集本身在頁面甚至開始呈現之前被填充。請記住,服務器端代碼總是在頁面加載和呈現之前執行。

至於回答你的問題,正如其他人指出的,你不需要在頁面加載中包含一個隱藏變量或任何類型的javascript來運行,你實際上可以在html元素中嵌入邏輯權限,如下所示:

<td> 
    <input type="radio" class="form" name="isDeleted" id="isDeletedNo" value="0" <% if rs("isDeleted") = false then %> checked="checked" %> > 
    <input type="radio" class="form" name="isDeleted" id="isDeletedYes" value="1" <% if rs("isDeleted") = true then %> checked="checked" %>> 
</td> 

這裏假設您的數據庫中的isDeleted字段是布爾型或位類型。如果它是一個數字或字符串,你會做這樣的事情:

<td> 
    <input type="radio" class="form" name="isDeleted" id="isDeletedNo" value="0" <% if CStr("" & rs("isDeleted")) = "0" then %> checked="checked" %> > 
    <input type="radio" class="form" name="isDeleted" id="isDeletedYes" value="1" <% if CStr("" & rs("isDeleted")) = "1" then %> checked="checked" %>> 
</td> 

我將其轉換爲這裏的字符串的情況下,該字段包含任何數據,這樣你就不會嘗試比較值的錯誤空或空白錯誤。

現在,當您發佈,你會從單選按鈕,發送過的價值,就像您任何其他形式的元素:

dim isDeleted : isDeleted = Request.Form("isDeleted") 

值應該返回1或零,這取決於什麼選擇。

+0

這正是我剛剛做的。檢查最後的評論給我的問題。這種方法非常相似,所以我想我必須接受你的答案! – Karapapas