3

我想检测这个文本字段是否为空,然后基于它运行一些代码。

问题是:我怎样才能只运行一次代码......然后每次文本字段的状态在一个期间发生变化时再次运行它focus

  • 不同的状态是emptynot empty

进一步阐述:

(这些 jsfiddle 中最重要的部分显示在控制台中。)

  • 这是每次键入时执行代码的代码的 jsfiddle(不是我想要的。只是初始代码。)。

    $('input').on("keyup", function() {
    
        var val = $(this).attr('value'),
            previous = $(this).prev();
    
        if ( val === '' ) {
            console.log('Empty');
        }
        else if ( val !== '' ) {
            console.log('Text');
        }
    
    });
    
  • 这是一个代码的jsfiddle,每个焦点执行一次代码(这有点接近我想要的)。

    它仍然缺少的,我似乎无法完成的,是基本上每次在那个焦点期间状态发生变化时再次运行代码。我怎么能那样做?

    $('input').on("focus", function() {
    
        $('input').one("keyup", function() {
    
            var val = $(this).attr('value'),
                previous = $(this).prev();
    
            if ( val === '' ) {
                console.log('Empty');
            }
            else if ( val !== '' ) {
                console.log('Text');
            }
    
        });
    
    });
    
4

2 回答 2

1

您需要使用来自 ZURB 的名为 jQuery Text Change 的插件。做你想要的一切,还有一个叫做'hastext'和'notext'的触发动作,看看:

http://www.zurb.com/playground/jquery-text-change-custom-event

那里也有演示。

我为你做了这个(使用那个插件)。

现场演示:

http://jsfiddle.net/oscarj24/UtwNz/

希望这可以帮助 :-)

于 2012-05-20T15:31:42.643 回答
0

您可以保留该字段的值,并且仅在值的状态发生更改时触发:http: //jsfiddle.net/xk6A5/9/

于 2012-05-20T15:33:52.753 回答