我正在使用带有最新版本jQuery的asp.net web form 4.0。 我的页面包含几个按钮和输入。
我要做的是将焦点设置在gridview中的下一个输入字段。此输入字段具有特定的类。该行为仅在单击按钮或按下ctrl +向下箭头时才有效。
我的gridview的类是GridView,我输入的类是toControl。 因此,这会创建一个带有行=“GridView”的表。有些行的td带有class =“toControl”的输入。
我用.next,.nextAll甚至索引编写了几个东西,但我猜我有一些特定的解决方案。
我用于按钮和点击事件的两个功能是:
$(document).keydown(function (e) {
if (e.keyCode == 40 && e.ctrlKey) {
e.preventDefault();
NextError();
}
});
$('#ButtonNext').on('click', function () {
NextError();
});
NextError函数:
function NextError() {
$('.GridView .toControl:first').focus();
}
现在显示下一个错误字段,重点是我的GridView中的第一个toControl。这段代码有效。 但是,当我尝试下面的代码行时,它不起作用。
$('.GridView .toControl').next().focus();
所以即使基本功能也不起作用。如果我设法解决这个问题,我甚至必须更进一步。当用户使用toControl填充输入时,它会丢失该类。我正在考虑通过一个经过验证的课程来否定它,因为这很困难。
那我到底错在了什么?我已经搜索了大量的stackoverflow问题,但第一个焦点是我得到的最接近的问题。
编辑:根据要求,我添加了gridview生成的html。
<table class="GridView" id="MainContent_GridView1" style="border-width: 0px; border-collapse: collapse;" rules="all" cellspacing="0">
<tbody>
<tr class="errorRow" onclick="ShowCase(image link,image link)">
<td>0003_CASE1</td><td>1</td><td>1</td><td>
<input name="ctl00$MainContent$GridView1$ctl02$GridViewValidate" class="toControl" id="MainContent_GridView1_GridViewValidate_0" type="number">
</td>
</tr><tr>
<td>0003_CASE2</td><td>2</td><td>1</td><td>
<input name="ctl00$MainContent$GridView1$ctl03$GridViewValidate" disabled="disabled" class="aspNetDisabled" id="MainContent_GridView1_GridViewValidate_1" type="number">
</td>
</tr><tr class="errorRow" onclick="ShowCase('image link,image link)">
<td>0003_CASE3</td><td>3</td><td>1</td><td>
<input name="ctl00$MainContent$GridView1$ctl04$GridViewValidate" class="toControl" id="MainContent_GridView1_GridViewValidate_2" type="number">
</td>
</tr><tr>
<td>0003_PAGE3</td><td>3</td><td>1</td><td>
<input name="ctl00$MainContent$GridView1$ctl05$GridViewValidate" disabled="disabled" class="aspNetDisabled" id="MainContent_GridView1_GridViewValidate_3" type="number">
</td>
</tr>
</tbody></table>
答案 0 :(得分:0)
我会抓住符合条件的所有输入,然后跟踪“ctrl + down”按键之间的位置。
基本上,它的作用是保留jQuery对象“errorControls
”中所有“toControl”控件的列表,并使用{{1}跟踪输入列表中的当前索引。变量。
每次调用index
时,索引都会递增。如果它是列表中的最后一个元素,则“index”将重新设置为零。
以下是代码:
NextError
这是一个指向JSFiddle的链接,显示了在您的示例HTML表上运行的JS代码:http://jsfiddle.net/kKhS2/