如何检查列表框在客户端是否为空

How to Check if ListBox is Empty on Client-Side

本文关键字:客户端 是否 列表 何检查 检查      更新时间:2023-09-26

我创建了一个javascript confirm,如下所示。

<script Type="Text/Javascript">
function CheckListBox(lvi)
{
    if(lvi == "")
    {
        if(confirm("Are you sure?"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
</script>

我需要测试ListBox.Items控件是否为空... 我已经在我的 aspx 页面上做了参考

<script language="javascript" type="text/javascript" src="/JS/confirm.js"></script>

我想知道如何在我的aspx.cs页面上调用它。 。所以我可以通过parameter

string oi = Listbox_Clubes.Items.Count.ToString();//Its the parameter I want to pass

有关如何从代码隐藏执行 javascript 的信息,请参阅此链接

protected void Page_Load(object sender, EventArgs e)
{
     ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "CheckListBox(" + Listbox_Clubes.Items.Count.ToString() + ");", false);
}

注意: 必须在 aspx 页中添加脚本管理器控件。

对于你的 javascript,你可以在没有代码隐藏的情况下获取值(这假设脚本代码在同一页面中,以便获取客户端 ID):

 <script>
     function ClickListBox() {
         if ($("#<%= Listbox_Clubes.ClientID  %>").val() === null) {
             if (confirm("Are you sure?")) {
                 return true;
             }
             else {
                 return false;
             }
         }
     }
 </script>

同样,您不使用 javascript 在服务器端进行验证。您发布的代码将返回列表框中的所有项。这是获取所选项目数计数的一种方法(我根据 OP 代码示例使用.ToString()):

string oi = Listbox_Clubes.Items.Cast<ListItem>().Where(i => i.Selected).Count().ToString();

但是,您没有理由获取此值并将其传递回客户端以进行验证(听起来您想在帖子中做什么)。主要是因为这涉及回发,而客户端验证本质上应该在回发之前进行。此外,即使您具有客户端验证,您仍然需要执行服务器端验证。

相关:在代码隐藏中,您可以测试以查看是否通过以下方式选择了任何内容:

bool hasValue = Listbox_Clubes.SelectedItem != null;

.SelectedItem返回列表控件中索引最低的选定项。如果未选择任何内容,则此值null...因此,您知道如果值不是null,则至少选择一个项目。

如果你想要求他们至少选择一个项目,你可以使用 RequireFieldValidator 并让它处理这两个验证。如果你没有对 ASP.NET 验证器做太多事情,那将是一件值得阅读的好事。

听起来您可能应该阅读有关客户端验证和服务器端验证以及如何使用它们的更多信息......因为看起来你把它们混在一起了。

计数代码是 ASP:ListBox 中代码的修改版本 获取所选项目 - 一行?