对jquery中的所有输入文本类型使用$(this)

时间:2014-07-29 17:16:44

标签: jquery

<input type="text" id="txtOMSourceName" onkeypress="hideSpan()"/>
<input type="text" id="txtMPName" onkeypress="hideSpan()"/>

我正在验证页面上有几个文本框,如果没有输入数据则标记为错误。我正在为这些文本框添加错误类。我想在文本框中开始输入时删除错误类。我想在jquery中使用它来引用当前文本框而不是ID,所以我可以在其他页面上重用代码。

我在文本框的按键上调用hideSpan。它在我指定ID时有效。但不是这个关键字

function hideSpan() {
 /*  $('#txtOMSourceName').removeClass('error');
     $('#ddlOMSite').removeClass('error');
     $('#txtMPName').removeClass('error');
     $('#txtOMResendInterval').removeClass('error');*/

    $(this).removeClass('error');
    $("#requiredspan").hide("slow");

}

2 个答案:

答案 0 :(得分:1)

在事件中发送this以了解谁调用了该函数:

<input type="text" id="txtOMSourceName" onkeypress="hideSpan(this)"/>

和功能:

function hideSpan(e) {
 /*  $('#txtOMSourceName').removeClass('error');
     $('#ddlOMSite').removeClass('error');
     $('#txtMPName').removeClass('error');
     $('#txtOMResendInterval').removeClass('error');*/

    $(e).removeClass('error');
    $("#requiredspan").hide("slow");
}

答案 1 :(得分:1)

我认为这是一个更好的解决方案:

假设你有一堆文字输入:

<input type="text" id="txtOMSourceName" />
<input type="text" id="txtMPName "/>

不是将函数编写到每个标记元素中,而是只需:

$('input[type="text"]').on('keydown', function() {

    $(this).removeClass('error');
    $('#requiredspan').hide('slow');
}