0

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

    $(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 文件......

4

1 回答 1

2

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

var i = $('input');

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

var i = $(this);

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

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

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

$(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 ,请使用 jQuery API doco 来.delegate()代替.on()(有关更多信息,请参阅 jQuery API 文档)。

于 2012-07-04T05:52:02.097 回答