根据记录集值检查单选按钮

Check a radio button depending on a recordset value

情况总结:

有一个 HTML 页面,其中包含一些用于过滤记录集的输入。
带记录的table是由经典的asp页面绘制的。
每行都有一些值显示在 editable 输入元素中,用户可以更改和提交这些值。 其中一些值始终为 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 存根,但这是一个很好且简单的方法,所以如果有人有更好的主意,我会关注这个问题。

Does the execute too soon? Or at least before the recordset is retrieved?

不,该函数将在页面加载完成后触发。记录集本身甚至在页面开始呈现之前就已填充。请记住,服务器端代码总是在页面加载和呈现之前执行。

至于回答你的问题,正如其他人所指出的,你不需要在页面加载时包含隐藏变量或任何类型的 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>

我在这里将其转换为字符串以防字段不包含数据,这样您在尝试将值与 null 或空白错误进行比较时就不会出现错误。

现在,当您 post 时,您将像发送任何其他表单元素一样从单选按钮发送值:

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

该值应 return 1 或零,具体取决于所选内容。