如何设置没有类或ID的下一个输入字段
How to set the next input field without class or ID
我是JQuery和Javascript的新手。我有一个表是动态创建的(使用DataTables插件),并有6列和0或更多行。前四列包括两个下拉菜单和两个输入字段。我正试图根据他们在相应的下拉菜单中选择的内容设置下一个输入字段的值。
在下面的例子中,第一个下拉列表有两个值:Site1和Site2。如果用户选择Site2,则应该触发onchange事件,getSiteObjects()函数将用一个值填充下一个输入字段。我不知道他们选择哪个下拉菜单,但我知道下一个表单字段将是我要设置的相应输入字段。如何设置下一个输入字段?
HTML代码片段:
<tr class="customizationRow odd" role="row">
<td class="sourceSiteCell">
<div class="form-group">
<select class="form-control user-input" onchange="getSiteObjects(this)">
<option class="option"/>
<option class="option">Site1</option>
<option class="option">Site2</option>
</select>
</div>
</td>
<td class="sourceObjectCell">
<input class="form-control user-input" type="text" value="">
</td>
<td class="targetSiteCell">
<div class="form-group">
<select class="form-control user-input" onchange="getSiteObjects(this)">
<option class="option"/>
<option class="option">Site1</option>
<option class="option">Site2</option>
</select>
</div>
</td>
<td class="targetObjectCell">
<input class="form-control user-input" type="text" value="">
</td>
<!-- More of the same code for the other columns -->
</tr>
JavaScript函数:
function getSiteObjects(select) {
var selectedSite = select.value; // Gets the value selected
<!-- Make an ajax call to get the value from a REST service -->
$(this).next('input').val("Hello1"); // Doesn't work
$(this).find('input').val("Hello2"); // Doesn't work
// select.next('input').val("Hello3"); // Doesn't work
}
我创建了一个jsFiddle演示我的问题:jsFiddle演示
$()
是jQuery的构造函数。
this
是对调用的DOM元素的引用。
所以基本上,在$(this)
中,你必须在$()
中传递this
(在你的情况下接收参数select
)作为参数,以便你可以调用jQuery方法和函数。
function getSiteObjects(select) {
var _this = $(select);
_this.closest('td').next('td').find('input').val(_this.val());
}
.console-line
{
font-family: monospace;
margin: 2px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table class="table table-hover">
<tr>
<th>Source Site</th>
<th>Source Object</th>
<th>Target Site</th>
<th>Target Object</th>
</tr>
<tr class="customizationRow odd" role="row">
<td class="sourceSiteCell">
<div class="form-group">
<select class="form-control user-input" onchange="getSiteObjects(this)">
<option class="option"/>
<option class="option">Site1</option>
<option class="option">Site2</option>
</select>
</div>
</td>
<td class="sourceObjectCell">
<input class="form-control user-input" type="text" value="">
</td>
<td class="targetSiteCell">
<div class="form-group">
<select class="form-control user-input" onchange="getSiteObjects(this)">
<option class="option"/>
<option class="option">Site1</option>
<option class="option">Site2</option>
</select>
</div>
</td>
<td class="targetObjectCell">
<input class="form-control user-input" type="text" value="">
</td>
<!-- More of the same code for the other columns -->
</tr>
</table>
选择器错误。对于目标输入,
1)你需要遍历到父td元素与类targetSiteCell使用.closest('.targetSiteCell')
2)然后到下一个td使用.next()
3)与.find()
方法一起查找td:
$(this).closest('.targetSiteCell').next().find('input').val("Hello1");
相关文章:
- 在对象中查找下一个键id
- 如何获取id并在ror中基于该id显示下一个字段
- jQuery鼠标滚动到下一个id
- 如何在 JavaScript 中获取另一个 ID 下的 ID
- 如何使用jQuery查找具有ID属性的下一个元素
- 获取下一个 DOM 元素的 ID
- 滚动到数组中的下一个元素 ID
- 返回匹配对象 id 的下一个和上一个对象
- 单击按钮时获取下一个/上一个 ID
- 如何在Javacscript中通过getElementById获取一个id下的元素的类名
- 如何创建一个函数来获取jquery中元素的下一个id并调用该函数
- 如何找到下一个ID
- 用javascript按下一个没有id或名称的按钮
- 获取下一个播放视频的视频id
- 使用jquery,当元素不是按连续顺序排列时,如何返回具有下一个连续ID的元素?
- 保存点击谷歌地图标记ID -重置图标上的下一个标记单击
- 如何获得下一个窗口的id
- 如何在每个锚点上选择具有唯一id的下一个元素
- 我如何从下一个元素得到Id
- 传递所选DIV的ID到下一个PHP页面,没有表单或URL变量