Я редактирую локатор дилера в 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.
использование
var eles = document.getElementsByClassName('street1');
for(var i=eles.length; ele--;) ele[i].style.display = 'none';
вместо
document.getElementById('street1').style.display = 'none';
поскольку street1
- это класс, а не идентификатор, а getElementsByClassName
возвращает несколько элементов.
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.
Вот пример двух элементов управления, введите один и появится ohter.
То, что вы делаете, это использовать селектор, placeholder-shown
помощью placeholder-shown
. Вы можете сделать заполнитель пробелом, если вы не хотите его показывать.
Это код:
Html:
<input type="text" id="aa" placeholder=" ">
<input type="text" id="bb">
CSS:
#aa:placeholder-shown ~ #bb{
display:none;
}
street1
- это класс, а не ID.