我在同一个tr中选择一个隐藏的输入字段但有一个不同的td时遇到了问题。在我的Javascript下面:
function MarkAsChanged() {
$(this).addClass('changed');
var $row = $(this).closest('td').prev('td > input[type="hidden"]');
$row.addClass('changed');
}
$(':input[type="text"]').blur(MarkAsChanged).change(MarkAsChanged);
正如您所看到的,我尝试了一些选择器(var $ row)。 代码中的“this”指的是以下HTML代码中的输入元素“blabla-text”:
<tr>
<td><input type="hidden" value="1" name="blabla-hidden"></input></td>
<td>foo 1</td>
<td>foo 2</td>
<td></td>
<td><input type="text" value="2" name="blabla-text"></input></td>
</tr>
因此,如果您更改输入“blabla-text”中的值,我希望将隐藏的输入字段更改为“已更改”。我无法使用选择器中的名称/ ID,因为该表有多行,我只想将更改的数据发布到我的PHP(所以我只发布class = changed的文本字段)。 Javascript适用于文本字段,但不适用于隐藏字段。
我真的希望我很清楚,如果没有,请告诉我如何详细说明。
提前致谢!
答案 0 :(得分:2)
试试这个:
function MarkAsChanged()
{
$(this).addClass('changed');
var $row = $(this).closest('tr').find('input[type="hidden"]');
$row.addClass('changed');
}
$('input[type="text"]').blur(MarkAsChanged).change(MarkAsChanged);
演示:
你必须找到最接近的'tr'标签并使用'find'来找到隐藏的字段。
答案 1 :(得分:0)
您可以根据表格结构使用此代码:
<table>
<tr>
<td><input type="hidden" value="1" name="blabla-hidden"></input></td>
<td>foo 1</td>
<td>foo 2</td>
<td></td>
<td><input type="text" onkeyup="MarkAsChanged(this);" value="2" name="blabla-text"></input></td>
</tr>
</table>
<script>
function MarkAsChanged(curObj)
{
$(curObj).addClass('changed'); //curObj is Your Textbox
var hiddenFieldObj = $(curObj).parent('td').parent('tr').find('td').eq(0).find('input[type="hidden"]'); //hiddenFieldObj is Your Hidden Field
$(hiddenFieldObj).addClass('changed');
}
</script>
希望它应该有用