我有下面的“其他”框。我想验证该框,只有当它可见时它才不是空白。对于什么应该是直截了当我遇到了麻烦。任何帮助非常感谢。感谢
else if($('#myBox_' + id + ':visible')) { if(!blank('otherprodtypebox[<xsl:value-of select="@id"/>]')){alert("Please enter a valid other option");return false;} }
<script type="text/javascript">
function myOtherBox(e, id) {
if (e.value == 'otherprodtype')
{
$('#myBox_' + id).show();
}
else
{
$('#myBox_' + id).hide();
}
}
</script>
<tr style="display:none;">
<xsl:attribute name="id">myBox_<xsl:value-of select="@id"/></xsl:attribute>
<td class="Label">Other</td>
<td>
<input class="amdInputText" type="text" id="otherprodtypebox" value="">
<xsl:attribute name="value"><xsl:value-of select="otherprodtypebox"></xsl:value-of></xsl:attribute>
</input>
</td>
</tr>
编辑:
我现在几乎要工作了:
else if($('#myBox_<xsl:value-of select="@id"/>').is(':visible')) { if(!blank('otherprodtypebox[<xsl:value-of select="@id"/>]')){alert("Please enter a valid other option");return false;} }
好吧所以这似乎只在盒子可见时检查验证并且如果它是空的则抛出警报然后由于某些奇怪的原因当我填写盒子它没有按预期抛出警报但不会让我继续并且没有错误消息
答案 0 :(得分:1)
我成功地使用了一些东西,但最重要的是.is(':visible')
工作代码:
else if(($('#myBox_<xsl:value-of select="@id"/>').is(':visible'))&&(!blank('otherprodtypebox[<xsl:value-of select="@id"/>]'))){alert("Please enter a valid other option");document.lending.otherprodtypebox[<xsl:value-of select="@id"/>].focus();return false; }
答案 1 :(得分:1)
将$('#myBox_' + id + ':visible')
替换为$('#myBox_' + id).is(':visible')
可解决问题
答案 2 :(得分:0)
我不太确定,但我认为这会导致问题(这是否会导致任何结果?你可以检查一下):
$('#myBox_' + id + ':visible')
而不是这个,您可以尝试检查可见属性,如:
$('#myBox_' + id).attr('visible')
答案 3 :(得分:0)
你应该知道$('#myBox_' + id + ':visible')
是一个jQuery选择器,因此如果没有元素匹配,它将返回一个空数组。
在JavaScript中将空数组转换为布尔值将始终返回true
。因此,if($('#myBox_' + id + ':visible'))
将始终返回true
。
您可以使用if($('#myBox_' + id + ':visible').length > 0)
确保您的选择器至少匹配一个元素。