【问题标题】:jQuery select dropdown value escaping characterjQuery选择下拉值转义字符
【发布时间】:2015-05-27 11:14:50
【问题描述】:

<select id=SomeDropdown>
  <option value="0">Nothing Here</option>
  <option value="1">- Requirement Analysis</option>
  <option value="2">- - Training & Self Learning</option>
  <option value="3">- - - Bug Fixing</option>
<select>

注意选项值/文本可能包含一些字符:

  1. 单引号(')
  2. 连字符 (-) /双连字符 (- -)

当使用键盘选择Bug fixing 时,它不会选择任何内容,但可以使用-

什么是转义字符(在我的例子中是连字符)并允许用户从下拉列表中选择值的正确方法 usign keyboard

【问题讨论】:

  • when a user seaches 'bug fixing' 是什么意思?如果您让用户进行纯文本搜索,请将您的完整代码添加到问题中。听起来你应该使用:contains,而不是转义字符
  • 您使用的是标准选择还是插件?
  • @RoryMcCrossan。错字。检查更新。
  • @IrvinDominin,标准选择
  • @Slimshadddyyy 那个错字不是问题。我们需要查看您编写的代码才能提供帮助。

标签: javascript jquery jquery-selectors


【解决方案1】:

如果不使用插件,这可能会很棘手。我最终使用了在 keyup 上触发的超时并在 keydown 上重置(参考 Run javascript function when user finishes typing instead of on key up?

逻辑是超时处理写入过程,当停止时,使用jQuery搜索以写入的字符开头的第一个选项元素并将其设置为选中。

代码:

//setup before functions
var typingTimer;               //timer identifier
var doneTypingInterval = 500;  //time in ms, 5 second for example
var keyText='';

//on keyup, start the countdown
$('#SomeDropdown').keyup(function(e){
    clearTimeout(typingTimer);
    keyText+=String.fromCharCode(e.which);
    typingTimer = setTimeout(doneTyping, doneTypingInterval);
});

//on keydown, clear the countdown 
$('#SomeDropdown').keydown(function(e){
    clearTimeout(typingTimer);    
});

//user is "finished typing," do something
function doneTyping () {

    console.log(keyText)
    $("#SomeDropdown option").filter(function() {
        return this.text.replace(/(\-\s)/gi, '').toUpperCase().lastIndexOf(keyText, 0) === 0; 
    }).attr('selected', true);

    keyText='';
}

已知问题:

  • 退格打开选择选项并打破逻辑
  • 打开选择时,无法识别自定义输入,它使用内置的

演示:http://jsfiddle.net/th6oxfaq/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多