0

次のhtmlコードがあります。

<span class="retrievedValue"><%= f.text_field :DIRECT_LABEL, :class=>"mandatory", :onblur =>"validate_this_textfield(this.value, this.id);" %></span>
<span style="display: none; float: left;"> <img src="../images/green_tick.png" /></span>

ユーザーがフィールドに入力したときに「green_tick.png」画像を表示する必要があります。このために、以下の JavaScript 関数を使用しました。

function validate_this_textfield(field_value, field_id)
{
    if( $j('#' + field_id).val() != "") {

        $j('#' + field_id ).next().show(); // show next element after field
    }
    else{
        $j('#' + field_id ).next().hide();
    }
}

私は .next().show(); を使用しています。「green_tick.png」画像を表示しますが、うまくいかないようです。

なにか提案を??

ありがとう

4

3 に答える 3

2

試す:

function validate_this_textfield(field_value, field_id)
{
    if( $j('#' + field_id).val() != "") {
        $j('#' + field_id ).removeClass('mandatory');
        $j('#' + field_id ).addClass('mandatory_field_completed')
        .parent().next().show(); // show next element after field
    }
    else{
        $j('#' + field_id ).removeClass('mandatory_field_completed');
        $j('#' + field_id ).addClass('mandatory')
        .parent().next().hide();
    }
}

スパン内のフィールドではなく、スパンから次を取得したいので、最初に親に移動する必要があります。

于 2012-10-26T15:25:41.307 に答える
1

jQuery API docs によると、nextメソッドは次のとおりです。

一致した要素のセット内の各要素の直後の兄弟を取得します。セレクターが指定されている場合、そのセレクターに一致する場合にのみ、次の兄弟を取得します。

タグは、フィールドの<img>兄弟ではありません。次のようにする必要があります。

$('#fieldID').parent().next().show();

これが実際の例です: http://jsfiddle.net/wWeyj/

于 2012-10-26T15:25:58.063 に答える
0

.next()スパンは の兄弟であるため、使用する前に最初にスパンに移動する必要があります。

<span class="retrievedValue"> and not the input itself try this..

これをセレクターに追加します。 .closest('.retrievedValue')

function validate_this_textfield(field_value, field_id)
{
    if( $j('#' + field_id).val() != "") {
        $j('#' + field_id ).removeClass('mandatory');
        $j('#' + field_id ).addClass('mandatory_field_completed')
        .closest('.retrievedValue').next().show(); // show next element after field
    }
    else{
        $j('#' + field_id ).removeClass('mandatory_field_completed');
        $j('#' + field_id ).addClass('mandatory')
        .closest('.retrievedValue').next().hide();
    }
}
于 2012-10-26T15:26:03.360 に答える