【问题标题】:How to find the specific input box that triggered keydown event from many other inputs如何从许多其他输入中找到触发 keydown 事件的特定输入框
【发布时间】:2015-02-01 17:06:22
【问题描述】:

我有一个 div 包含许多 input 框。我不希望用户能够在字段中提交空格键。
HTML

<div class="container">
Input1<input type="text">
Input2<input type="text">
</div>

Javascript

$(".container :input").keydown(function(event){
    if(event.which == 32){
        //code to change the specific text box to = ""
    };
});

我已经尝试过this.val() = "",但由于某种原因这似乎不起作用。

如果有通过 html 的替代方法来阻止输入框接受空格,那么这将起作用。

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

我在这里更新了你的代码:http://jsfiddle.net/fg6p1ujz/

$(".container :input").keydown(function(event){
    if(event.which == 32){
        //uncomment if you want to clear the field 
        // $(this).val("");
        return false
    };
});

如果您想禁用某个键,您可以在用户按下该键时返回 false。您可以使用 $(this).val("")

清除该字段

【讨论】:

    【解决方案2】:

    在事件处理程序中,this 关键字指的是引发事件的元素。因此,您可以这样做:

    $(".container :input").keydown(function(event) {
        if (event.which == 32) {
            $(this).val('');
        };
    });
    

    请注意,我已将this 包装在一个 jQuery 对象中,以便我可以在其上使用 jQuery 方法,例如 val()prop()。然后我使用val()的setter将字段的值设置为''

    您也可以在原生 JS 中执行此操作,方法是使用 DOMElement 本身的 value 属性:

    this.value = '';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      相关资源
      最近更新 更多