热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在ASP.NET中使用JavaScript验证AJAX组合框

背景:点击下载ComboBoxValidation工作中可能会出现必须用AJAXComboBox(组合框)替代ASP.NET的下来列表控制。使用组合框,一切运行良好,直到开始校验它,然后我们尝试用chrome提供的开发者工具调试,由此得知组合框是如何形成的。基本上是由如下三个控制

背景:

点击下载ComboBoxValidation

工作中可能会出现必须用AJAX ComboBox(组合框)替代ASP.NET的下来列表控制。使用组合框,一切运行良好,直到开始校验它,然后我们尝试用chrome提供的开发者工具调试,由此得知组合框是如何形成的。基本上是由如下三个控制所组成:

TextBox(文本框)

Button(按钮)

ListBox(列表框)

起初列表框控制都是隐藏的,当我们点击按钮以提供下拉菜单效果时它才显示。

然后我们尝试使用Javascript并传送组合框客户ID给Javascript并检查其值,依然不能校验组合框,因为我得到了无效值异常。

在使用一些试用方法,我们即获得一个解决方案,所用

function validateCombobox() {
    var comboboxId = document.getElementById('<%=ComboBox1.ClientId%>_TextBox');
    if (comboboxId.value != null && comboboxId.value != "") {
        alert(comboboxId.value);
    }
    else {
        alert("null value");
    }
}

从上述代码你能够判断我们是试图获得组合框的文本框控制(它负责显示选中值并为进一步的用户代码创建同样的可用值。

但是当我们在继承masterpage的页面使用它,然后HTML就不一样了,这个方法就不够可靠了。你可以通过查看你的源代码来核实。因此我们的function需要如下改变:

function validateCombobox() {
    var comboboxId = document.getElementById('<%=ComboBox1.ClientId%>_ComboBox1_TextBox');
    if (comboboxId.value != null && comboboxId.value != "") {
        alert(comboboxId.value);
    }
    else {
        alert("null value");
    }
}

Javascript,ASP.NET

这才是真正的问题。若不想写两个不同的functio来执行同样的任务,则可以用如下代码:

function validateCombobox() {
    var id = document.getElementById('<%=ComboBox1.ClientID %>');
    var inputs = id.getElementsByTagName('input');
    var i;
    for (i = 0; i < inputs.length; i++) {
        if (inputs[i].type == 'text') {
            if (inputs[i].value != "" && inputs[i].value != null)
                alert(inputs[i].value);
            else
                alert("null value");
            break;
        }
    }
}

在上述代码中你可以看到我们在Javascript中用其客户ID获得控制。然后会发现所有TagName input控制都会出现在那个自定义控制中。现在我们运行一个循环来找到文本框并比较其值(无论它是否无效)。

同样地,你可以检查你想要在客户端用Javascript处理组合框的其它值或任务。

在解决这个之后,会看到一个新的问题——当在一个div位置属性使用它时,我们看到列表框不在组合框的文本框控制下面。在搜索之后我们得知问题在于div包含含有位置属性的组合框。因此当我们移除位置属性,一切都运转正常了。

Javascript,APS.NET

组合框的列表框有内联样式表,包含position:absolute属性。

但为了设置页面布局,有必要使用位置属性。

之后我们发现,如果能够从absolute到fixed覆盖位置属性,任务就能完成。我们可以为同一的目的用position:static。

在搜索后会发现组合框有如下内置供我们覆盖:

.ajax__combobox_inputcontainer 

.ajax__combobox_textboxcontainer

.ajax__combobox_buttoncontainer

.ajax__combobox_itemlist

为此我们用如下代码:

.combo{
//your style
     }
   .combo .ajax__combobox_itemlist{
        position : static !important;
      }

在上述代码中我们已经创建了一个类名称组合以便覆盖项目列表类的位置属性。

我们都知道,内联样式表有更高的优先级并省去了所有矛盾的属性,它们最终被应用,最后的样式属性覆盖所有值钱匹配的属性。

因此我们用!important规则,通过给样式表指定更高的优先级来帮助覆盖样式表的内联样式属性。

Javascript,ASP.NET


推荐阅读
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • 本文探讨了在不使用服务器控件的情况下,如何通过多种方法获取并修改页面中的HTML元素值。除了常见的AJAX方式,还介绍了其他可行的技术方案。 ... [详细]
  • 如何清除Chrome浏览器地址栏的特定历史记录
    在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
  • MATLAB实现n条线段交点计算
    本文介绍了一种通过逐对比较线段来求解交点的简单算法。此外,还提到了一种基于排序的方法,但该方法较为复杂,尚未完全理解。文中详细描述了如何根据线段端点求交点,并判断交点是否在线段上。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 以下实例展示了locals( ... [详细]
  • andr ... [详细]
  • VPX611是北京青翼科技推出的一款采用6U VPX架构的高性能数据存储板。该板卡搭载两片Xilinx Kintex-7系列FPGA作为主控单元,内置RAID控制器,支持多达8个mSATA盘,最大存储容量可达8TB,持续写入带宽高达3.2GB/s。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 本文介绍如何在Linux服务器之间使用SCP命令进行文件传输。SCP(Secure Copy Protocol)是一种基于SSH的安全文件传输协议,支持从远程机器复制文件到本地服务器或反之。示例包括从192.168.45.147复制tomcat目录到本地/home路径。 ... [详细]
  • 本文详细介绍了如何在CentOS 7操作系统上安装和配置Grafana,包括必要的依赖项安装、插件管理以及服务启动等步骤。 ... [详细]
author-avatar
抬头看着海
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有