Javascript 所选jquery插件的输入限制

Javascript 所选jquery插件的输入限制,javascript,jquery,Javascript,Jquery,我想使用以下代码将输入(字母数字)限制为文本字段: $('input').bind('keypress', function (event) { var regex = new RegExp("^[a-zA-Z0-9]+$"); var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); if (!regex.test(key)) { event.prevent

我想使用以下代码将输入(字母数字)限制为文本字段:

$('input').bind('keypress', function (event) {
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
       event.preventDefault();
       return false;
    }
});

上面的代码在标准输入字段上工作得很好,但是当我输入由selected生成的字段时,该函数不被应用。所选插件确实生成了一个包含
的div,但是
$('input')
似乎没有触及它。我猜这是由于应用上述代码的时间安排

> p> >而不是<代码> .bdId()/>代码>,考虑使用它将动态创建的元素工作。

< p>而不是<代码> .bdId()/<代码>,考虑使用它对动态创建的元素起作用。

< p>杰克的答案是有效的。但需要了解的重要一点是,keypress事件会冒泡,因此您可以在节点层次结构中的任何位置捕捉到它,而该节点不是动态生成的


这对内存也更友好,因为它不会为页面上的每个输入安装单独的处理程序。

Jack的答案有效。但需要了解的重要一点是,keypress事件会冒泡,因此您可以在节点层次结构中的任何位置捕捉到它,而该节点不是动态生成的


这对内存也更友好,因为它不会为页面上的每个输入安装单独的处理程序。

您不能为“输入”字段指定“类”属性吗???您不能为“输入”字段指定“类”属性吗???谢谢您的课程。确实很有价值,但它看起来对所选的输入字段不起作用=(@Abram:哪个部分不起作用?上一个版本中有一个小错误。请参阅答案中的JSFIDLE。我将在家中加载所选的插件。我尝试使用JSFIDLE上的“添加资源”选项加载它,但没有用。不确定您以前做了什么更改,但现在可以使用了。非常感谢!@Abram实际上没有导航是被允许的。修复了这个例子,它允许导航,插入,主页,结束和所有的好东西。谢谢你的教训。真的很有价值,但它看起来没有做选择的输入字段的把戏=(@Abram:哪个部分不起作用?上一个版本中有一个小错误。请参阅答案中的JSFIDLE。我将在家中加载所选的插件。我尝试使用JSFIDLE上的“添加资源”选项加载它,但没有用。不确定您以前做了什么更改,但现在可以使用了。非常感谢!@Abram实际上没有导航是被允许的。修复了这个示例,它允许导航、插入、主页、结束和所有这些好东西。对不起,杰克,不适用于我的案例。我想这是关于选择的工作方式:(对不起,杰克,不适用于我的案例。我想是关于选择的工作方式:(
$(document).bind('keypress', function (event) {
    // Will fire for all elements, we only care for inputs
    // Also allow navigation keypresses
    if (event.target.tagName.toUpperCase() != "INPUT" ||
            $.inArray(event.which, [8,9,13,16,17,18,19,20,27,33,34,35,36,37,38,39,40,45,46]) ) {
      return;
    }
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    // jQuery already normalizes event.which
    var key = String.fromCharCode(event.which);
    if (!regex.test(key)) {
       event.preventDefault();
       return false;
    }
});