2016-10-31 12 views
-2

Wordpressでディーラーロケータを編集していますが、いくつかのフィールドを変更する必要があります。 私は、他のフィールドが記入されている場合、フィールドを非表示にする必要がありPHPとCSS - 他のフィールドが入力されている場合は要素を隠す

シナリオ:。

をユーザーがアドレス欄に記入し、空白のアドレス2のフィールドを離れた場合、要素のアドレスを示しています。 私はその部分を解決しましたが、今私は次の部分に苦労しています。ユーザーがアドレス2欄に記入した場合は、アドレス2を示し、住所

に私が今使っているコードを非表示にする必要があります。

function custom_listing_template() { 

global $wpsl, $wpsl_settings; 

$listing_template = '<li class="my_change_list" data-store-id="<%= id %>">' . "\r\n"; 

$listing_template .= "\t\t" . '<div class="locator_wrap_left">' . "\r\n"; 
$listing_template .= "\t\t" . '<div class="locator_title">' . "\r\n"; 
$listing_template .= "\t\t\t\t" . wpsl_store_header_template('listing') . "\r\n"; 
$listing_template .= "\t\t" . '</div>' . "\r\n"; 
$listing_template .= "\t\t" . '<div class="locator_left">' . "\r\n"; 
$listing_template .= "\t\t\t" . '<p><%= thumb %>' . "\r\n"; 

$listing_template .= "\t\t\t\t" . '<span class="wpsl-street street1"><%= address %></span>' . "\r\n"; 
$listing_template .= "\t\t\t\t" . '<% if (address2) { %>' . "\r\n"; 
$listing_template .= "\t\t\t\t" . ' <span class="wpsl-street street2"><%= address2 %></span>' . "\r\n"; 
$listing_template .= "\t\t\t\t" . '<% } %>' . "\r\n"; 
$listing_template .= "\t\t\t\t" . '<span>' . wpsl_address_format_placeholders() . '</span>' . "\r\n"; 
$listing_template .= "\t\t\t\t" . '<span class="wpsl-country"><%= country %></span>' . "\r\n"; 
$listing_template .= "\t\t\t" . '</p>' . "\r\n"; 
$listing_template .= "\t\t" . '</div>' . "\r\n"; 

私は次のことを試してみましたが、助けていないようです!

document.getElementById('street1').style.display = 'none'; 

EDIT:私は今、それはPHPファイルですので、JavaScriptを避けるためにしようとしています。

+3

'street1'クラス、ないIDです。 – kennytm

+0

javascriptの質問を掲示して、PHPの解決を主張するopのためにdownvoted、これは可能でもありません。また、質問はPHPのタグが付いていません。 –

答えて

0

street1は、idではなく、classの要素です。

var street1 = document.getElementsByClassName('street1'); 
 

 
for (var x = 0; x < street1.length; x++) { 
 
    street1[x].style.display = 'none'; 
 
}
<span class='street1'>elem 1</span> 
 
<span class='street1'>elem 2</span> 
 
<span class='street1'>elem 3</span> 
 
<span class='street1'>elem 4</span>

JSFIDDLEを:あなたが代わりにdocument.getElementById('street1').style.display = 'none';

document.getElementsByClassName('street1').style.display = 'none';を使用する必要が

はまた、あなたがそれらを隠すことができるように、すべての要素を反復しなければなりません。 street1として

2

使用

var eles = document.getElementsByClassName('street1'); 
for(var i=eles.length; ele--;) ele[i].style.display = 'none'; 

代わりに

document.getElementById('street1').style.display = 'none'; 

クラスないIDとgetElementsByClassName複数の要素を返しています。

+0

あなたの答えをありがとう、私はJavascriptを避けていることを明確にしていない、これはPHPファイルであり、基本的な構造はPHPですあなたがJavascriptを使用していた場合、あなたの答えはうまくいくでしょう。あなたの時間をありがとう! – 3424323243

+1

まず、あなたのコードサンプルはjavascriptであり、phpは質問にタグ付けされていません。 2番目に、PHPはテキストをレンダリングしてブラウザに送ります。 phpは文字通りブラウザに送られた後はdom内のものを隠すことはできません。 –

0

ここには、2つのコントロールの例があります。1つを入力すると、ヒーターが表示されます。

JSfiddle example

何をしてplaceholder-shownセレクタを使用しています。表示したくない場合は、プレースホルダに空白を付けることができます。

これはコードである:

HTML:

<input type="text" id="aa" placeholder=" "> 
    <input type="text" id="bb"> 

CSS:

#aa:placeholder-shown ~ #bb{ 
display:none; 
} 
関連する問題