【问题标题】:jquery trigger all input elements with blur on loadjquery在加载时触发所有带有模糊的输入元素
【发布时间】:2012-06-08 09:55:36
【问题描述】:

我正在使用 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(),以便在链式选择事物中自动填充下一个列表。 但这有点不同......

【问题讨论】:

  • 不是直接方式,但您可以设置所有可能的事件,如键盘按键等,以使用 Your_copier 函数处理。如果我没有明白你的问题,请告诉我

标签: jquery events triggers copy


【解决方案1】:

你可以使用技巧:)

$('input').each(function(){
  $(this).trigger('blur');
  //each input event one by one... will be blured
})

【讨论】:

    【解决方案2】:
    $('input[type=text], textarea').blur();
    

    或者(如果一切都与 jQuery 绑定,可能会更快):

    $('input[type=text], textarea').triggerHandler('blur');
    

    【讨论】:

      【解决方案3】:

      你试过 .trigger() 吗?

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

      【讨论】:

      • 我认为他知道触发器,请参阅问题标题
      【解决方案4】:

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

      【讨论】:

      • 刚刚更新了我的第一篇文章。我不使用内联编码,而是按原样使用模糊。当用户离开该字段时,我会调用我为这个特定表单组合的一个函数......
      • 那么为什么不直接调用 $(document).ready 中的 copyFormData 来填充默认值呢?还是我缺少您的表单中的一个步骤?
      • 不明白你的问题。我猜这是一种常规形式。虽然它在类似这样的可滚动中分为三个不同的“页面”:jquerytools.org/demos/scrollable/wizard.html
      【解决方案5】:

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

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

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

      【讨论】:

        【解决方案6】:

        你可以使用下面的代码来帮助你

         $('input:text').each(function(){
                $(this).trigger('blur');
            })
        

        【讨论】:

          【解决方案7】:

          如果您碰巧为输入的所有 ID 添加了相同的前缀并希望一次只模糊这些输入,您可以使用通配符选择并这样做:

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

          【讨论】:

            猜你喜欢
            • 2018-03-13
            • 2013-05-12
            • 1970-01-01
            • 2012-01-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多