jQuery 在加载时触发所有带有模糊的输入元素

jquery trigger all input elements with blur on load

提问人:ThomasK 提问时间:6/8/2012 最后编辑:ThomasK 更新时间:7/29/2019 访问量:24338

问:

我正在使用 blur() 将用户在表单中编写的内容复制到注册向导结束时的摘要页面中。这效果很好。

但是,当我预设一些字段值并且这些值是正确的时,不会复制任何内容,因为用户可能不会与该特定字段进行交互。他们只需单击“继续”。

有没有办法触发所有文本字段,文本区域以便复制这些值?

这是我正在使用的函数:

/**
 *  Author: Thomas Kile
 *  Desc:   Copy text from a form element into a given tag.
 **
 *  @param string $type type of form element
 *  @param string $from Id of form element to copy text/value from.
 *  @param string $to Id of element to copy text/value into.
 */
    function copyFormData(type,from,to)
    {   
        switch (type)
        {
            case 'text':  var copied_text = $(from).val();  break; //  get input text value
            case 'select': var copied_text = $(from+' option:selected').text();  break;
        }
        $(to).text(copied_text);   //  put inside this tag
    }

这就是我使用它的方式:

$(firstName).blur(function(){   copyFormData('text',firstName,'strong#firstName');  });
$(lastName).blur(function(){    copyFormData('text',lastName,'strong#lastName');    });

我应该在哪里放置 trigger() 事件? 一旦使用 getJSON 获取列表,我就对 select>first 选项使用了 trigger(),以便在链接的选择事物中自动填充下一个列表。 但这有点不同......

jQuery 事件 触发器 复制

评论

0赞 Maziar Aboualizadehbehbahani 6/8/2012
不是直接的方式,但您可以设置所有可能的事件,如键盘、键控等,以使用Your_copier功能进行处理。如果我不明白你的问题,请告诉我

答:

12赞 Sergei Zahharenko 6/8/2012 #1

您可以使用技巧:)

$('input').each(function(){
  $(this).trigger('blur');
  //each input event one by one... will be blured
})
0赞 Ihor Deyneka 6/8/2012 #2

你试过 .trigger() 吗?

http://api.jquery.com/trigger/

评论

0赞 Maziar Aboualizadehbehbahani 6/8/2012
我想他知道触发器,参考问题的标题
0赞 Jeff Watkins 6/8/2012 #3

怎么样,将您的复制输入转换为摘要代码并将其放入函数中。保持模糊不变(除了调用此函数而不是内联代码),并在 $(document).ready() 上选择所有文本框,如果它们包含任何内容,请复制它们。比试图捏造事件更简单。

评论

0赞 ThomasK 6/8/2012
刚刚更新了我的第一篇文章。我不使用内联编码,而是按原样使用模糊。当用户离开字段时,我调用我为这个特定表单组合在一起的函数......
0赞 Jeff Watkins 6/8/2012
那么,为什么不直接调用 $(document).ready 中的 copyFormData 来填充默认值呢?或者我的表格中缺少一个步骤?
0赞 ThomasK 6/13/2012
不明白你的问题。我猜这是一种常规形式。尽管它在可滚动的可滚动中分为三个不同的“页面”,类似于以下内容:jquerytools.org/demos/scrollable/wizard.html
3赞 Razor 6/8/2012 #4
$('input[type=text], textarea').blur();

或者(如果所有内容都与jQuery绑定,可能会更快):

$('input[type=text], textarea').triggerHandler('blur');
0赞 Petros Mastrantonas 6/8/2012 #5

您可以尝试通过启动以编程方式触发它们

$("selector").trigger("blur"); 

api.jquery.com/trigger 是你的朋友:-)

0赞 user3361464 7/17/2014 #6

您可以使用下面的代码,它会对您有所帮助

 $('input:text').each(function(){
        $(this).trigger('blur');
    })
0赞 Neel 7/29/2019 #7

如果您碰巧将相同的前缀添加到输入的所有 ID,并且希望一次只模糊这些输入,则可以使用通配符选择并按如下方式执行:

$("[id^=inputbox] input").trigger("blur");