jQuery向事件处理程序返回true,但事件(获取输入)不会结束

时间:2018-11-11 18:21:29

标签: jquery html input event-handling

我有一个表格,其中将输入的无线电元素(标题下的第二层)包含到标题中(以生成选择项)-已经过测试,并且功能正常。

要管理标头,我需要单击查询事件,当标头不在上述情况下时,该事件将执行(已验证)操作。因此,如果我们不关心这种情况,则.click事件简单会返回true,以便在测试之后继续(简单的if)。

问题是未执行输入(从不检查标题中的单选按钮)。

注意:如果执行了操作(未执行测试),则将执行操作,并且需要用户再次单击以获得要检查的单选按钮。这是我可以检查单选按钮的寂寞情况。

(总结)了js代码:

$(".H_title")
        .focusin(function(event) {
            if ( ... )  { do stuff }
            return true; // go on action
          } )
        .focusout(function() {...do_stuff);} );
//END

可能是什么原因?

注意:我不能将任何内容更改为可操作的html结构,因为它是由几种代码(php和其他js)生成的。我必须能够在不更改结构和内容的情况下将单选按钮检入页面。

最诚挚的问候

Trebly

1 个答案:

答案 0 :(得分:0)

在此问题上,谢谢查理特菲。

我知道我的解释不够准确,无法理解此案。更多我在复制代码时引入了错误。

一个真正的问题是我找到了一个可以达到目标的解决方案,但我既不确定为什么它不起作用以及为什么现在起作用,我不确定。

有两个开发步骤:

1-仅当单击标题中的跨度时才执行填充(但在按住shift键时不涉及元素上的其他填充)。 HTML结构包含:

<h5>
   <span class="toc-target" tabindex="1000"> <!-- puts the "target" on top -->
      <span class="H_title">
           Adhérent
      </span>
   </span>
   <span class="endof_tocid"></span>
</h5>

前两个级别的SPAN的原因是它是由两个不同的软件块完成的,并且需要两个不同的类。

有效的相关代码(自三年以来)为:

$(".H_title")
        .click(function(event) {
            if ( ... )  { do stuff1 }
            return true; // go on action
          } )
        .focusin(function() {...do_stuff2a);} );
        .focusout(function() {...do_stuff2b);} );
//END

2-在某些情况下,我需要一个单选按钮,并且在这种情况下不执行stuff1(只需将输入添加到标题中),然后HTML代码变为:

<h5>
   <span class="toc-target" tabindex="1000"> <!-- puts the "target" on top -->
      <span class="H_title">
         <input name="user_type" type="radio" value="adh">
           Adhérent
      </span>
   </span>
   <span class="endof_tocid"></span>
</h5>

然后我写了不起作用的js代码:

$(".H_title")
        .click(function(event) {
            if ( ... )  { do stuff1 }
            return true; // go on action of the click on the button
          } )
        .focusin(function() {...do_stuff2a);} );
        .focusout(function() {...do_stuff2b);} );
//END

在我看来,该错误似乎是单选按钮无法进入H_title范围,而没有用于管理事件的代码。注意:焦点动作和事件也是如此。

如果没有为click事件编写Jquery代码,则说明一切正常。

//BEGIN    
$(".toc-target > input")
      .click( function(){ return true; }); 
      .focusin(function() {return true; } );
      .focusout(function() {return true; } );
$(".H_title")
        .click(function(event) {
            if ( ... )  { do stuff1: move-top }
            return true; // go on actions
          } )
        .focusin(function() {...do_stuff2a);} );
        .focusout(function() {...do_stuff2b);} );
//END

使用此代码单击输入功能,行为是什么: 1- $(".toc-target > input")事件被引发并返回true,这似乎无济于事,导致正常选择了单选按钮和事件气泡。 2-H_titles收到他的click事件,并正常执行。

就目前而言,focusin-focusout仍不能与按钮结合使用,我认为问题出在与单击的冲突(单击标题时焦点)。 我必须澄清一些有关人体工程学的要点和兼容性(在PC和Mobiles上可用)。

另一种解决方案可能是从H_title到“输入”似乎“传播” ,但是我还没有找到一种将stuffxx所需的一切都清楚地分离出来的好方法。

可能是我错了,或者您有一些建议以最佳方式做到这一点。

最诚挚的问候

Trebly