如果标签为hasClass'错误'展开切换。

时间:2016-05-26 06:36:04

标签: javascript jquery html

这可能是一个愚蠢的问题,但如果它返回错误,我需要在表单上展开切换。提交表单时,它会重新加载页面,因此最初隐藏了slidedown。

在表格中有一个toogle的链接:

<span id="slideDownCreateMail"  styleId="createEmail" class="createNewEmailGallery">Expand</span>

HTML看起来像这样:

<div class="showCreateNewEmailAccount" >
            <fieldset>
                <h3>Enter mail</h3>
                <p id="createNewEmailAccount">
                    <label for="name">Email:</label>
                    <html:text property="address" styleClass="border" styleId="address" />
                </p>
                <div><one:error property="address" element="label" /></div>

                <p>
                    <label for="mailPassword1">Password:</label>
                    <html:password property="mailPassword1" styleClass="border" styleId="mailPassword1" />
                </p>
                <div><one:error property="mailPassword1" element="label" /></div>

                <p>
                    <label for="mailPassword2">Password (again):</label>
                    <html:password property="mailPassword2" styleClass="border" styleId="mailPassword2" />
                </p>
                <div><one:error property="mailPassword2" element="label" /></div>

            </fieldset>
        </div>

我试图用这样的jQuery来做:

$(document).ready(function(){

        $("#slideDownCreateMail").click(function(){
            $(".showCreateNewEmailAccount").slideToggle("slow");

            /*if (!$(".showCreateNewEmailAccount").hasClass("error"))  {
                $(".showCreateNewEmailAccount").css('display','block');
            }*/
        });
        $('.showCreateNewEmailAccount label').has('error').css('display', 'block');
    });

但上述情况似乎都不起作用。 此标记中返回错误:

    <p>
    <label for="mailPassword1">Password</label>
        <html:password property="mailPassword1" styleClass="border" styleId="mailPassword1" />
    </p>
<div><one:error property="mailPassword1" element="label" /></div>

有没有人知道可以做什么? :) 谢谢。

2 个答案:

答案 0 :(得分:1)

如果没有看到更多HTML,我只能猜测......

HTML - 如果您可以为标记添加ID

<one:error property="mailPassword1" element="label" styleId="errorLabel" />

jQuery -

$(document).ready(function(){

  if ( $('#errorLabel').hasClass('error') ) {
    $('#errorLabel').css('display', 'block');
  }

});

如果您无法在元素上添加ID,请确保其在.showCreateNewEmailAccount中的100%然后

编辑 -

$(document).ready(function(){

  if ( $('.showCreateNewEmailAccount label').hasClass('error') ) {
    $('.showCreateNewEmailAccount').css('display', 'block');
  }

});

答案 1 :(得分:1)

你可以这样做:

var $field = $('.showCreateNewEmailAccount');
var hasError = $field.find('label.error').length;

$field.slideToggle(hasError);