【问题标题】:How to focusout an html array? [duplicate]如何聚焦一个html数组? [复制]
【发布时间】:2021-06-29 07:05:37
【问题描述】:

我想在这个 html 数组中添加一个 focusout 函数。

数组:

echo '<td><input name="codemf[]" type="text" id ="codemf'.$indexofid.'" class="form-control form-control-sm" required></td>';

对焦功能:

$('#codemf[]').focusout(function () 
                {
                    if ($('#codemf[]').val() !== '') 
                    {
                        $.get("req.php?mf=", function (data) 
                        {
                            var is=0;
                            var info = data.split('|');
                            for(let i=0;i<info.length;++i)
                            {
                                if($('#codemf[]').val()==info[i])
                                {
                                    
                                    is=1;
                                }
                            }
                            if(is==0)
                            {
                                $('#codemf[]').addClass("is-invalid");
                                $('#command').attr('disabled', true);
                            } else {
                                $('#codemf[]').removeClass("is-invalid");
                                $('#command').attr('disabled', false);
                            }
                        });
                    }
                    else
                    {
                        $('#codemf[]').removeClass("is-invalid");
                        $('#command').attr('disabled', false);
                    }
                });

我尝试了很多东西,但没有任何效果...... 如果有人有想法,它会救我。

【问题讨论】:

  • 试试$('input[name="codemf"]') 而不是$('#codemf[]')
  • 你想在这里达到什么目的?
  • html 数组是指input吗?您的输入是 name=codemfid=codemfnnn 其中 nnn 可以是任何值。所以你不能使用#codemf,因为你不知道id。您可以使用name=,但需要将其转义为[],作为选择器中的含义。所以需要$('[name="codemf\\[\\]"')

标签: javascript php html jquery ajax


【解决方案1】:

你使用的是一个id选择器$('#codemf[]')

您可以将一个类附加到您希望拥有 focusout 事件的所有输入标签,并且只需使用 $(this) 选择器来选择当前元素。

<input name="codemf[]" type="text" class="some-class form-control form-control-sm" required>

$(".some-class").focusout(function(){
    // do something here
    // like $(this).addClass("another-class");
});

请注意,您必须委托事件才能处理动态添加的元素,因此您必须使用 on()。

$(".some-class").on("focusout", function(){
    // do something here
    // like $(this).addClass("another-class");
});

【讨论】:

    【解决方案2】:

    我可能在一些事情上做得不好,所以请注意我说的话。

    !--

    这可能是你的问题:

    Jquery 的 $('#..') 负责处理 ID,而不是元素的名称

    (jquery 的选择器像 CSS 一样工作,用于 ID,用于类,没有用于标记)

    或者就像最后一个人说的,你可以按属性选择—— $('input[name="..."]')

    !----

    如果 id 出于某种原因需要是动态的,您可以在类上添加一个侦听器并使用 this.id 获取焦点输出元素的 id

    根据您的需要,您可以使用聚焦或模糊(不是错误,以防万一出现问题)

    名称大小写:我不确定名称中的“[]”是否恰当,大多数时候我只使用驼峰字母,没有特殊字符

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多