2016-10-31 78 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'; 

编辑:我想现在因为它是一个PHP文件,以避免的JavaScript。

+3

'street1'是一类,而不是一个ID。 – kennytm

+0

downvoted for op张贴javascript问题,然后坚持一个php解决方案,这是不可能的。这个问题也没有标签的PHP。 –

回答

0

street1class元素,而不是id

您需要使用document.getElementsByClassName('street1').style.display = 'none';代替document.getElementById('street1').style.display = 'none';

你也拥有遍布元素迭代能够隐藏起来:

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。使用,而不是

2

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

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

作为street1是一个类不是一个ID和getElementsByClassName返回多个元素。

+0

谢谢你的回答,但我没有明确表示我避免使用Javascript,因为这是一个PHP文件,基本结构是PHP如果我使用Javascript,你的答案会起作用。感谢您的时间! – 3424323243

+1

首先,你的代码示例是javascript和php甚至在问题中没有标记。其次,PHP渲染文本并将其发送到浏览器。一旦将它们发送到浏览器,php实际上无法将事物隐藏在dom中。 –

0

下面是两个控件的示例,输入一个,然后显示出来。

JSfiddle example

你要做的就是使用placeholder-shown选择。如果您不希望它显示,您可以使占位符成为空白区域。

这是代码:

HTML:

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

CSS:

#aa:placeholder-shown ~ #bb{ 
display:none; 
}