PHP & CSS - Скрыть элемент, если заполнено другое поле

-2

Я редактирую локатор дилера в Wordpress, и мне нужно изменить несколько полей. Мне нужно скрыть поле, если другое поле заполнено.

Сценарий:

Если пользователь заполняет поле "Адрес" и оставляет поле "Адрес2" пустым, отображается адрес элемента. Я решил эту часть, но теперь я борюсь со следующей частью. Если пользователь заполняет поле Address2, ему необходимо показать адрес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: Я пытаюсь избежать javascript прямо сейчас, так как это файл PHP.

  • 3
    street1 - это класс, а не ID.
  • 0
    проголосовал за оп опубликовать вопрос javascript, а затем настаивать на решении php, что даже невозможно. Также вопрос не помечен php.

3 ответа

2

использование

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

вместо

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

поскольку street1 - это класс, а не идентификатор, а getElementsByClassName возвращает несколько элементов.

  • 0
    Спасибо за ваш ответ, но я не дал понять, что я избегаю Javascript, поскольку это php-файл, а основная структура - PHP. Ваш ответ будет работать, если я использую Javascript. Спасибо за уделенное время!
  • 1
    Прежде всего, ваш пример кода - JavaScript, а php даже не помечен в вопросе. во-вторых, php отображает текст и отправляет его в браузер. У php буквально нет возможности скрывать вещи в домене после их отправки в браузер.
0

street1 - элемент class, а не 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.

0

Вот пример двух элементов управления, введите один и появится ohter.

Пример JSfiddle

То, что вы делаете, это использовать селектор, placeholder-shown помощью placeholder-shown. Вы можете сделать заполнитель пробелом, если вы не хотите его показывать.

Это код:

Html:

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

CSS:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню