javascript - JQuery 专注于先前点击的输入错误

标签 javascript jquery

我有两个输入字段。主要思想是,每当您关注其中一个字段时,单击按钮应该在其中打印一个随机数。

我的问题是,当您只关注(点击)第一个字段,然后关注第二个(反之亦然)时,按钮点击打印到两个而不是只打印到(最后一个)关注的字段。

You can try to recreate the problem here: http://jsfiddle.net/sQd8t/3/

JS:

$('.family').focus(function(){

var iD = $(this).attr('id');

    $("#sets").one('click',function() {

        var ra = Math.floor((Math.random()*10)+1);

        $('#'+iD).val(ra);


    });

});

HTML:

<center class='mid'>
    <input type="text" class="family" id="father" />
    <br/><br>
    <input type="text" class="family" id="mother" />

    <br/>
    <br/>
    <input type='submit' value='Set text' id="sets"/>
</center>

最佳答案

在“焦点”处理程序中,取消绑定(bind)任何现有的“点击”处理程序:

$('#sets').unbind('click').one('click', function() { ... });

按照您的方式,每次字段获得焦点时都会绑定(bind)一个额外的一次性“点击”处理程序,因为 jQuery 允许您将任意数量的处理程序绑定(bind)到一个事件。换句话说,调用 .one() 不会解除绑定(bind)其他处理程序。当点击实际发生时,所有处理程序都会运行。

编辑 — 抱歉 — “解除绑定(bind)”是旧的 API;现在 .off() 是首选。

关于javascript - JQuery 专注于先前点击的输入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12229575/

相关文章:

javascript - 悬停在 <a> 上时激活的 jquery 弹出窗口需要更改为 <label>

javascript - Angular 2 将表单发布到外部链接

jquery - 如何获取语义UI中下拉菜单的值?

javascript - Jquery Modal 点击添加类然后删除

javascript - 如何更改禁用控件的颜色

Jquery 终端文本格式化语法,我做错了什么?

javascript - 异步/等待解析 json

javascript - 防止多次意外的 PHP 表单提交

javascript - Webstorm JavaScript 和 Typescript zen 编码

javascript - RegExp 通配符不应覆盖