【问题标题】:Get the input selector using this使用这个获取输入选择器
【发布时间】:2017-09-06 03:47:16
【问题描述】:

我有一组动态生成的输入字段,因此我不能使用 ID。对于每个输入字段,我都有一个 focusout 方法来验证最终用户输入的值。

如果验证失败,我想清除输入的值并将焦点带回相同的输入。当我尝试使用这个关键字时,似乎将作用域设置为windows而不是输入控件。

输入框截图:

function validate(reg){
debugger;
if(isNaN(reg)==false){
    return;
}
else
{
    alert("The field should contain number");
    $(this).val(""); //clear the value
    $(this).focus();
}
}

在上面的代码中,这个关键字似乎不起作用。

【问题讨论】:

  • 你从哪里调用验证?
  • 从输入字段,onfocusout事件会调用这个方法
  • 请给出调用/附加监听器的具体代码,这是失败的根源。
  • 你是对的Teemu

标签: javascript jquery-events jquery-focusout


【解决方案1】:

将事件传递给您的validate() 函数,然后您可以使用event.target 来定位输入元素。

function validate(reg, e){
debugger;
if(isNaN(reg)==false){
    return;
}
else
{
    alert("The field should contain number");
    $(e.target).val(""); //clear the value
    $(e.target).focus();
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input onfocusout="validate(this.value, event)"/>
<input onfocusout="validate(this.value, event)"/>
<input onfocusout="validate(this.value, event)"/>

【讨论】:

  • 谢谢你这样做了。就像提姆建议的那样,我没有通过事件。
【解决方案2】:

另一种方法:

$(document).ready(function () {
    var inputs = document.querySelectorAll("input[type=text]");
    for (i = 0; i < inputs.length; i++)
        inputs[i].addEventListener("focusout", function () { validate(this); });
});

function validate(reg) {
    if (isNaN($(reg).val()) == false) {
        return;
    }
    else {
        alert("The field should contain number");
        $(reg).val(""); //clear the value
        $(reg).focus();
    }
}
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2020-02-23
    • 2018-08-28
    • 2020-03-23
    • 2014-11-24
    相关资源
    最近更新 更多