社区首页 >问答首页 >jQuery自动完成验证选定的值

jQuery自动完成验证选定的值
EN

Stack Overflow用户
提问于 2009-04-28 05:36:39
回答 4查看 38.3K关注 0票数 22

我们正在使用由Jörn Zaefferer编写的autocomplete jQuery插件,并尝试验证是否输入了有效的选项。

这个插件有result()事件,它会在做出选择时触发。这是可以的,但当用户单击时,我也需要检查文本框中的值。因此,我们尝试了.change()和.blur()事件,但它们都提出了一个问题:当您单击results div ( 'suggest‘列表)中的条目时,.change()和.blur()事件会触发,而这是在插件将值写入文本框之前,所以此时没有什么需要验证的。

有没有人可以帮我配置事件,这样每当有人单击离开时,但不是在结果框中,我就可以检查框中的有效值。如果这是错误的方法,请告诉我正确的方法。我们最初使用这个插件是因为它的'mustMatch‘选项。这个选项似乎不是在所有情况下都有效。很多时候,一个有效的条目会被写入到文本框中,然后被插件清除为无效,我无法确定原因。

基本代码示例:

代码语言:javascript
代码运行次数:0
复制
<html>
<head>
<title>Choose Favorite</title>
<script language="JavaScript" src="jquery-1.3.2.min.js" ></script>
<script language="JavaScript" src="jquery.autocomplete.min.js" ></script>
<script>
    $(".suggest").autocomplete("fetchNames.asp", {
        matchContains:false,
        minChars:1, 
        autoFill:false,
        mustMatch:false,
        cacheLength:20,
        max:20
    });

    $(".suggest").result(function(event, data, formatted) {
        var u = this;
        // Check value here

    });

    /* OR */

    $(".suggest").change(function(me) {
        //check value here
    });

</script>
</head>
<body>
    <label for="tbxName">Select name (I show 10):</label><br />
    <INPUT type="text" id="tbxName" name="tbxName" class="suggest"><br />
</body>
</html>
EN

回答 4

Stack Overflow用户

发布于 2009-10-15 23:55:58

我认为,与其编写自己的函数来验证数据是否匹配,不如直接调用search()。如果使用空的data参数调用result(),那么您就知道没有使用自动完成功能,并且通过在data上调用search(),您可以保证至少调用一次result()

我已经为a similar question发布了这段代码,它在这里可能也会有帮助。

代码语言:javascript
代码运行次数:0
复制
autocompleteField.result(function(event, data, formatted) {
    if (data) {
        //auto-complete matched
        //NB: this might get called twice, but that's okay
    }
    else {
        //must have been triggered by search() below
        //there was no match
    }
});

autocompleteField.blur(function(){
    autocompleteField.search(); //trigger result() on blur, even if autocomplete wasn't used
});
票数 9
EN

Stack Overflow用户

发布于 2009-04-28 08:29:53

更新:这应该可以工作。我将名称列表加载到一个名为ListOfNames的数组中,它在onBlur()事件中用来验证输入的名称是否与数据一致。你可能需要做一些调整,但我认为它应该能做你想要的。

代码语言:javascript
代码运行次数:0
复制
var listOfNames = [];
$(document).ready(function(){
   $.get("fetchNames.asp", function(data){
     listOfNames = data.split("\r\n");    
   });
   $(".suggest").autocomplete("fetchNames.asp", {
        matchContains:false,
        minChars:1, 
        autoFill:false,
        mustMatch:false,
        cacheLength:20,
        max:20
    });
    $("#tbxName").blur(function(){
        if(!listOfNames.containsCaseInsensitive(this.value)){
          alert("Invalid name entered");
        }
    });        
});

Array.prototype.containsCaseInsensitive = function(obj) {
  var i = this.length;
  while (i--) {
    if (this[i].toUpperCase() === obj.toUpperCase()) {
      return true;
    }
  }
  return false;
}
票数 4
EN

Stack Overflow用户

发布于 2016-04-11 18:07:51

这是我过去用过的代码。非常干净和简单。

代码语言:javascript
代码运行次数:0
复制
var availableTags = [
  "ActionScript",
  "AppleScript",
  "Asp",
  "BASIC",
  "C",
  "C++",
  "Clojure",
  "COBOL",
  "ColdFusion",
  "Erlang",
  "Fortran",
  "Groovy",
  "Haskell",
  "Java",
  "JavaScript",
  "Lisp",
  "Perl",
  "PHP",
  "Python",
  "Ruby",
  "Scala",
  "Scheme"
];
$( "#currentSelectedLevel" ).autocomplete({
  source: availableTags,
  change: function( event, ui ) {
        val = $(this).val();
        exists = $.inArray(val,availableTags);
        if (exists<0) {
          $(this).val("");
          return false;
        }
      }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/797969

复制
相关文章
Python 代码风格指南谷歌版
非常感谢我们的忠实读者 shendeguize,在后台留言告诉我,已经翻译了《谷歌Python代码风格指南》 ,大家这样相互帮助,感觉真是太好。
double
2020/05/08
1.2K0
Python 代码风格指南谷歌版
Python 代码风格指南谷歌版
https://github.com/shendeguize/GooglePythonStyleGuideCN
龙哥
2020/05/05
1.3K0
分享Google C++风格指南
  Qt君为大家收集的Google C++风格指南PDF版本(可能并不是最新版本) 。
Qt君
2020/05/08
4940
分享Google C++风格指南
Google C++ 编程风格指南:注释
注释虽然写起来很痛苦, 但对保证代码可读性至关重要. 下面的规则描述了如何注释以及在哪儿注释. 当然也要记住: 注释固然很重要, 但最好的代码本身应该是自文档化. 有意义的类型名和变量名, 要远胜过要用注释解释的含糊不清的名字.
CPP开发前沿
2022/03/03
8540
谷歌Python代码风格指南,翻译版来了!
非常感谢我们的忠实读者 shendeguize,在后台留言告诉我,已经翻译了《谷歌Python代码风格指南》 ,大家这样相互帮助,感觉真是太好了。
程序员小猿
2021/01/19
1.5K0
谷歌Python代码风格指南,翻译版来了!
Google C++ 风格指南 - 中文版 [值得收藏]
http://yangyubo.com/google-cpp-styleguide/ 很实用的手册,感觉象是effective c++,但其中明确指出了一些在开发过程中应该尽力避免的特性与用法,完全基于经验判定,更加简练! 每一章后面还有译者的笔记,进行了总结! 1.代码小于10行时使用inline 2.private拷贝构造函数,尽量不重载运算符 3.少用继承,看是否能用组合代替
王亚昌
2018/08/03
3140
Google C++ 编程风格指南(三):类
类是 C++ 中代码的基本单元. 显然, 它们被广泛使用. 本节列举了在写一个类时的主要注意事项.
CPP开发前沿
2022/03/03
8320
Google C++ 编程风格指南:头文件
所有头文件要能够自给自足。换言之,用户和重构工具不需要为特别场合而包含额外的头文件。详言之,一个头文件要有 1.2. #define 保护,统统包含它所需要的其它头文件,也不要求定义任何特别 symbols.
CPP开发前沿
2022/03/03
7980
Google C++ 编程风格指南(八):格式
代码风格和格式确实比较随意, 但一个项目中所有人遵循同一风格是非常容易的. 个体未必同意下述每一处格式规则, 但整个项目服从统一的编程风格是很重要的, 只有这样才能让所有人能很轻松的阅读和理解代码.
CPP开发前沿
2022/03/03
1.7K0
JavaScript 风格指南 [每日前端夜话(0x1C)]
原文链接:https://github.com/ryanmcdermott/clean-code-javascript
疯狂的技术宅
2019/03/27
8710
JavaScript 风格指南 [每日前端夜话(0x1C)]
TensorFlow风格指南
片刻
2018/01/05
8330
Google C++ 编程风格指南(二):作用域
虽然类已经提供了(可嵌套的)命名轴线 (YuleFox 注: 将命名分割在不同类的作用域内), 名字空间在这基础上又封装了一层.
CPP开发前沿
2022/03/03
7910
Google C++ 编程风格指南(六):命名约定
最重要的一致性规则是命名管理. 命名风格快速获知名字代表是什么东东: 类型? 变量? 函数? 常量? 宏 … ? 甚至不需要去查找类型声明. 我们大脑中的模式匹配引擎可以非常可靠的处理这些命名规则.
CPP开发前沿
2022/03/03
1.8K0
Google C++ 编程风格指南(五):其他 C++ 特性
总之大多时候输入形参往往是 const T&. 若用 const T* 说明输入另有处理。所以若您要用 const T*, 则应有理有据,否则会害得读者误解。
CPP开发前沿
2022/03/03
1.2K0
Pointfree 编程风格指南
本文要回答一个很重要的问题:函数式编程有什么用? 目前,主流的编程语言都不是函数式的,已经能够满足需求。为何还要学函数式编程呢,只为了多理解一些新奇的概念? 一个网友说: "函数式编程有什么优势呢?
ruanyf
2018/04/12
8980
Pointfree 编程风格指南
[译] Google Go 风格指南
以下几条总体原则总结了如何编写可读的 Go 代码。以下为具有可读性的代码特征,按重要性排序:
pseudoyu
2023/04/11
2920
Airbnb React/JSX 风格指南
// bad <div accessKey="h" /> // good <div />
ConardLi
2019/05/23
1.4K0
flutter代码风格指南
•UpperCamelCase 每个单词的首字母都大写,包含第一个单词•lowerCamelCase 每个单词的首字母都大写,除了第一个单词, 第一个单词首字母小写,即使是缩略词•lowercase_with_underscores 只是用小写字母单词,即使是缩略词, 并且单词之间使用 _ 连接
用户1974410
2022/08/07
1.2K0
Google C++编程风格指南(四)之类的相关规范
类是C++中基本的代码单元,自然被广泛使用。本节列举了在写一个类时要做什么、不要做什么。
恋喵大鲤鱼
2018/08/03
8790
Google C++ 编程风格指南(四):来自 Google 的奇技
Google 用了很多自己实现的技巧 / 工具使 C++ 代码更加健壮, 我们使用 C++ 的方式可能和你在其它地方见到的有所不同.
CPP开发前沿
2022/03/03
7220

相似问题

谷歌C++风格指南的AStyle

14

谷歌C++风格指南包括订单

21

谷歌风格指南(前降部分)

20

示例代码与示例的C++谷歌风格指南?

24

C++操作符重载,了解谷歌风格指南

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档