使用此获取输入选择器

时间:2017-09-06 03:47:16

标签: javascript javascript-events jquery-focusout

我有一组动态生成的输入字段,因此我无法使用ID。对于每个输入字段,我有一个聚焦输出方法,它验证最终用户输入的值。 如果验证失败,我想清除输入的值并将焦点恢复到相同的输入。当我尝试使用此关键字时,范围似乎设置为窗口而不是输入控件。

输入字段截图:

Input fields screenshot

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

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

2 个答案:

答案 0 :(得分:0)

将事件传递给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)"/>
&#13;
&#13;
&#13;

这是你想要完成的吗?

答案 1 :(得分:0)

另一种方法:

&#13;
&#13;
$(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();
    }
}
&#13;
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
&#13;
&#13;
&#13;