正则表达式的jquery不起作用

时间:2012-07-04 05:49:16

标签: javascript jquery

我使用jquery作为输入框来验证其内容 我在我之前工作过的人创建了一个名为comoon.js的文件,该文件支持所有其他文件。但是当我在(文件).ready(函数()这样写这个代码时

    $(document).ready(function()
{
    $('#validate').keyup(function(){
      var i = $('input');
      (/http:\/\//).test(i.val()) && i.val(i.val().replace('http://',''));
    });

});

我有这样的输入框

<input type="text" id="validate"  class="right" name="linkurl" maxlength="150" size="130"/>

但它不能在这个按钮上工作我应该怎么做,问题是什么,我知道所有页面都加载了js文件......

1 个答案:

答案 0 :(得分:2)

假设您的页面上有多个输入,问题就在于这一行:

var i = $('input');

...将i设置为包含页面上所有输入的jQuery对象。请尝试改为:

var i = $(this);

...将i设置为仅包含事件发生元素的jQuery对象。

(只有一个输入时,您的代码才有效。)

如果有问题的输入是在页面加载后动态创建的,那么你将遇到第二个问题:你不能将事件处理程序绑定到一个尚不存在的元素,但是你可以使用一个委托的事件处理程序: / p>

$(document).ready(function()
{
    $(document).on("keyup", '#validate', function(){
      var i = $(this);
      (/http:\/\//).test(i.val()) && i.val(i.val().replace('http://',''));
    });
});

理想情况下,您将document中的$(document).on("keyup", '#validate', ...替换为页面加载中存在的最接近的“#validate”祖先。如果您使用的jQuery版本低于1.7,请使用.delegate()而不是.on()(有关详细信息,请参阅jQuery API doco)。