【问题标题】:Simple dynamic form简单的动态形式
【发布时间】:2013-02-04 08:37:18
【问题描述】:

我需要通过 .onblur 验证输入,这样每当文本输入失去焦点时,它就会被同一个 JS 函数验证。

我的问题在于 JS 函数。我想获取失去焦点的项目的价值。

function valid(){
if (isNaN("this should be the value of the text item??")){

}

谢谢..

【问题讨论】:

  • 请贴一些代码。

标签: javascript forms dynamic input textinput


【解决方案1】:

要在模糊时获取项目的值,应将onBlur 触发器添加到 DOM 元素,如下所示:

<input type="text" name="validate_me" onBlur="valid(this);" />

这样您就可以访问触发onBlur 事件的DOM 元素并访问其属性(例如textarea 元素的valueinnerHTML

你的valid 函数可以是这样的:

function valid(element) {
  if (element.value != '' && isNaN(element.value))
    alert('This field is not valid!');
};

【讨论】:

  • 您可以使用document.onLoad 注册一个方法,该方法将使用document.getElementByTagName('input') 查找所有输入,然后为每个输入注册onBlur 侦听器
【解决方案2】:

这个 javascript 应该可以满足您的要求:

(function(){
    var after = function(existing,after) {
        if ( existing == null || typeof existing !== 'function' ) {
            return after;
        }
        else {
            return function() { existing(arguments); after(arguments); }
        }
    }

    var validate = function(input) {
        alert('validating ' + input.name);
    }

    window.onload = after(window.onload, function() {
        var inputs = document.getElementsByTagName('input');
        for (var i = 0; i < inputs.length; i++) {
            if ( inputs[i].type === 'text' ) {
                inputs[i].onblur = after(inputs[i].onblur, function() {
                    validate(this);
                });
            }
        }
    });
}());

显然,您必须用您的验证逻辑替换 validate 函数中的警报,但这应该符合您的要求。

注意,立即调用的函数是为了确保您不会破坏任何全局变量,after 函数是为了确保如果您已经有一个附加的侦听器,那么您的新验证侦听器将在现有的。

【讨论】:

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