2

我有下面的“其他”框。我想验证该框,使其仅在可见时才为空白。对于应该直截了当的事情,我遇到了麻烦。非常感谢任何帮助。谢谢

    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;} }

好的,所以这似乎只在框可见时检查验证,如果它为空则抛出警报,但是由于某些奇怪的原因,当我填写框时它不会按预期抛出警报但不会让我继续并且没有错误消息

4

4 回答 4

1

我设法让它与事物的组合一起工作,但最重要的是 .is(':visible')

工作代码:

else if(($('#myBox_<xsl:value-of select="@id"/>').is(':visible'))&amp;&amp;(!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; }
于 2013-02-08T14:33:59.307 回答
1

替换$('#myBox_' + id + ':visible')$('#myBox_' + id).is(':visible')修复问题

于 2013-02-08T14:51:18.410 回答
0

您应该知道这$('#myBox_' + id + ':visible')是一个 jQuery 选择器,因此如果没有匹配的元素,它将返回一个空数组。

在 JavaScript 中将空数组转换为布尔值总是会返回true. 因此if($('#myBox_' + id + ':visible'))总会回来true

您可以使用if($('#myBox_' + id + ':visible').length > 0)它来确保您的选择器至少匹配了一个元素。

于 2013-02-08T12:39:54.237 回答
0

我不太确定,但我认为这可能会导致问题(这会返回任何结果吗?你可以检查一下):

$('#myBox_' + id + ':visible')

而不是这个,你可以尝试检查可见属性,如:

$('#myBox_' + id).attr('visible')
于 2013-02-08T11:56:21.443 回答