1

编辑:

感谢创建这个小提琴的 Puneet:http: //jsfiddle.net/G3vSK/

似乎它不适用于 Chrome 版本 28

在 Firefox (v22) 上,警报出现一次,但您不能在框中输入任何内容


我无法解决的另一个问题:这是我的 Javsacript 代码:

function updateFieldsetStyleAdjustment(){
    alert("update");
    $('fieldset').not('[data-style=\'none\']').find('input, select, textarea, button')  //find input-fields

        .focus(function(){
            alert("active: "+$(this).attr('id'));
        });
}

这个函数应该为我网站上的一些输入字段添加一个 onfocus-Handler。每当我关注一个字段以插入一个值时,都应该调用它。

我的问题是,当我关注一个输入字段时,该函数会被多次调用。每个焦点事件的呼叫/警报数量从 3 到 16 或更多不等。

然而,我的领域从未失去焦点。

我应用了 onfocus-event 2 次(“update”-alert 出现两次),但这是正常的。(我没有向输入字段添加 16 个 onfocus 事件侦听器)。

有人知道我在做什么错吗?

编辑:

这是 HTML 片段:

<fieldset id="fs_1" data-style="data" d class="">
    <legend>General Information</legend>

    <div class="lineWrapper inputTooltip" data-tooltippos="left">
        <label for="fs_1_form51f37d255fb35_name">Name</label>
        <span class="inputWrapper">
            <input type="text" id="fs_1_form51f37d255fb35_name" name="name" autofocus="" maxlength="40" tabindex="50">
        </span>
    </div>

    <div class="lineWrapper inputTooltip" data-tooltippos="left">
        <label for="fs_1_form51f37d255fb35_ansprechperson">Ansprechperson</label>
        <span class="inputWrapper">
            <input type="text" id="fs_1_form51f37d255fb35_ansprechperson" name="ansprechperson" maxlength="40" tabindex="51">
        </span>
    </div>
    <!-- ...more Wrappers with input-fields... -->
</fieldset>
<!-- ...more fieldsets... -->

我怎么称呼它:

1.) $(document).ready(function() { updateFieldsetStyleAdjustment(); });

2.) 在每次 Ajax-Request 之后我再次调用它(输入字段通过 Ajax 加载)

解绑:

当我放入$(this).unbind('focus');我的焦点事件处理程序时,它只被触发一次。但是当我再次关注同一个领域时,它不再起作用(如预期的那样)。

当我把$('*').unbind('focus');我的 -Function 放在开头时updateFieldsetStyleAdjustment(),它不会改变任何东西。

4

2 回答 2

1

alert() 是错误。意识到没有 alert() 一切正常。而且事件也只触发了一次。

警报始终未聚焦输入字段,因此创建了一个新警报。

我讨厌它,因为我的调试代码是程序中唯一的错误。

于 2013-07-27T11:18:07.260 回答
0

我认为你的问题出在这里。 在每次 Ajax-Request 之后,我都会再次调用它(输入字段是通过 Ajax 加载的)。

尝试仅使用 ajax 调用后生成focus的新绑定(尝试使用jQuery.on()函数)。或者尝试fieldset

    $('fieldset').not('[data-style=\'none\']').find('input, select, textarea, button').unbind('focus');
 //unbind focus from previously binded dom elements.

然后打电话

updateFieldsetStyleAdjustment
于 2013-07-27T08:19:58.450 回答