我有一个SharePoint编辑表单,我希望将其中一个Y / N字段设置为只读。此字段切换两个其他字段的可见性。 我已将只读转换为绑定标签字段。如果以“_ff5_1”结尾的此字段的值为“是”,那么我希望隐藏两个切换的字段,如果没有,则显示它们。
这是我第一次尝试的代码
if ($("span[id$=_ff5_1]").val() == "Yes") {
$("tr.anon").hide();
} else {
$("tr.anon").show();
}
我以为我可能会尝试使用上面的代码一次做太多,所以我将其修改为以下
$("span[id$='_ff5_1']") //select element
if $(this).val() ==='Yes' { //test val
$("tr.anon").hide(); // hide name & email rows
} else {
$("tr.anon").show();
}
但是,如果基于Y / N字段的值,似乎都不会隐藏行。
UPDATE1 @Nicola:我尝试了你的建议,但没有用。我相信问题是该字段($(“span [id $ ='_ ff5_1']”))不再是输入字段 - 我已将其转换为标签字段以使其为只读。
$("span[id$='_ff5_1']").each(function() { //returns a collection of elements that must be iterated through using each
if (this.value == "Yes") { //test value
$("tr.anon").hide();
} else {
$("tr.anon").show();
}
});
另外,我相信我试图隐藏的字段不是标签字段的父项,而是标签字段的子项。
感谢您的反馈。
UPDATE2: 这是绑定标签的src代码和我希望基于的切换可见性的两个文本字段。
<tr>
<td width="190px" valign="top" class="ms-formlabel"><H3 class="ms-standardheader">Anonymous</H3></td>
<td width="400px" valign="top" class="ms-formbody">
<span id="ctl00_m_g_e959bdad_1c52_41a7_b23f_564bc84c2497_ff5_1">Yes</span>
<br>Would you like to remain anonymous?</td>
</tr>
<tr class="anon">
<td width="190px" valign="top" class="ms-formlabel"><H3 class="ms-standardheader">Name</H3></td>
<td width="400px" valign="top" class="ms-formbody">
<span dir="none"><input name="ctl00$m$g_e959bdad_1c52_41a7_b23f_564bc84c2497$ff6_1$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_e959bdad_1c52_41a7_b23f_564bc84c2497_ff6_1_ctl00_ctl00_TextField" title="name" class="ms-long" /><br></span></td>
</tr>
<tr class="anon">
<td width="190px" valign="top" class="ms-formlabel"><H3 class="ms-standardheader">Email</H3></td>
<td width="400px" valign="top" class="ms-formbody">
<span dir="none"><input name="ctl00$m$g_e959bdad_1c52_41a7_b23f_564bc84c2497$ff7_1$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_e959bdad_1c52_41a7_b23f_564bc84c2497_ff7_1_ctl00_ctl00_TextField" title="email" class="ms-long" /><br></span></td>
</tr>
UPDATE3:Val()只应用于获取输入元素的值。 B / c我已将我的输入元素转换为标签,我应该使用.text()。 http://api.jquery.com/text/
最终更新:
$("span[id$='_ff5_1']").each(function() { //returns a collection of elements that must be iterated through using each
if ($(this).text() == "Yes") { //test value returned from non-input field
$("tr.anon").hide();
} else {
$("tr.anon").show();
}
});
答案 0 :(得分:2)
也许你应该做像
这样的事情$("span[id$=_ff5_1]").each(function(){
if (this.value == "Yes") {
$(this).closest("tr").find('.anon').hide();
} else {
$(this).closest("tr").find('.anon').show();
}
});
你必须做这样的事情,因为$("span[id$=_ff5_1]")
会返回一个elemens的集合,你必须对它们进行迭代。
然后我得到了最近的<tr>
元素,它是当前输入元素的父元素,并隐藏/显示类anon
的元素,坚果也许你需要不同的东西