首页 > php教程 > PHP开发 > 正文

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

高洛峰
发布: 2016-11-28 13:42:30
原创
1398人浏览过

背景:

点击下载ComboBoxValidation

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

TextBox(文本框)

Button(按钮)

立即学习Java免费学习笔记(深入)”;

ListBox(列表框)

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

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

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

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

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

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

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

psb.jpg

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

function validateCombobox() {
    var id = document.getElementById('');
    var inputs = id.getElementsByTagName('input');
    var i;
    for (i = 0; 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包含含有位置属性的组合框。因此当我们移除位置属性,一切都运转正常了。

psb.jpg

组合框的列表框有内联样式表,包含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规则,通过给样式表指定更高的优先级来帮助覆盖样式表的内联样式属性。

psb.jpg

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号