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

时间:2017-09-01 09:45:48

标签: javascript jquery html asp-classic

情况摘要:

有一个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存根,这是一个很好的简单方法,所以如果有人有更好的想法,我会留意这个问题。

1 个答案:

答案 0 :(得分:2)

  

执行太快了吗?或者至少在检索记录集之前?

不,该功能将在页面完成加载后触发。记录集本身在页面开始渲染之前填充。请记住,服务器端代码ALWAYS在加载和呈现页面之前执行。

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

现在,当你发帖时,你将发送单选按钮上的值,就像你对任何其他表单元素一样:

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

该值应返回1或0,具体取决于所选内容。