0

ドロップダウンがある以下のコードがあります。ドロップダウンは、他のオプションが選択されている場合にのみ表示されます。フィールドが空白でないことを検証するために、他のオプションが選択されている場合にのみチェックする検証を行いたい

この行は検証のために機能しますが、ボックスが非表示のときにもポップアップするため、追加のチェックを探します。私は一番下で試みをしていますが、うまくいくもっと気の利いた方法があるはずです。ありがとう

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>
    <td class="Label">Product Type</td>
    <td class="field">
        <select name="producttypes">
            <xsl:attribute name="onchange">myOtherBox(this, '<xsl:value-of select="@id"/>'); checkBoxVisible(this, '<xsl:value-of select="@id"/>')</xsl:attribute>
            <xsl:attribute name="id">producttypes_<xsl:value-of select="@id"/></xsl:attribute>

            <option value="a">
                <xsl:if test="producttypes/option[@id='a']='selected'">
                    <xsl:attribute name="selected"/>
                </xsl:if>A</option>
            <option value="b">
                <xsl:if test="producttypes/option[@id='b']='selected'">
                    <xsl:attribute name="selected"/>
                </xsl:if>B</option>
            <option value="otherprodtype">
                <xsl:if test="producttypes/option[@id='otherprodtype']='selected'">
                    <xsl:attribute name="selected"/>
                </xsl:if>Other</option>
        </select>
    </td>
</tr>
<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>



if($('#myBox_' + id).validate({ ignore: ':hidden' });) { if(!blank('otherprodtypebox[<xsl:value-of select="@id"/>]')){alert("Please enter a valid other option");return false;} }
4

1 に答える 1

1

検証にクラスを使用します。つまり、.validatorなどのクラスを検証します。

あなたのJSで:

function myOtherBox(e, id) {
    if (e.value == 'otherprodtype')
    {
        $('#myBox_' + id).show().addClass('validator');
    }
    else
    {
        $('#myBox_' + id).hide().removeClass('validator');
    }
}

編集:あるいは、上記の代わりにこれをセレクターとして使用することができます:

  if($('#myBox_' + id + ':visible').....................etc

それは良いでしょう。

于 2013-02-07T17:51:22.580 に答える