2016-03-20 2 views
0

gestern habe ich ein Thema hier Wordpress - How to change search value using a drop down selector?ändern Suchwert über Javascript

und ich figuret es mit Hilfe von Fredrik aber nach einiger Zeit änderte ich meine Idee und ich entfernt wählen, weil es innerhalb Eingang nicht gut war, als ich einige erstellt Links die Schrift ehrfürchtige Symbole weichen jetzt unter Verwendung

Mein abschließendes Suchformular ist

<div class="searchbox"> 
<form action="<?php echo home_url('/'); ?>" method="get"><button name="search" class="btn"> 
<span></span></button> 
<input type="text" id="s" name="s" value="" /> 

<input type="hidden" name="post_type" value="post" /> 

<div class="select_search"> 

<span class="wrs"> 
<i class="fa fa-video-camera" id="search_type_icon"></i> 
<i class="fa fa-caret-down"></i> 
</span> 

<div class="drop_search"> 
<span data-searchtype="photos"> 
<i class="fa fa-picture-o"></i> 
</span> 
</div> 

</div> 

</form> 
</div> 

und My JS besser aussehende

<script type="text/javascript"> 
function SearchPostValue(e) { 
e.preventDefault(); 
var t = $(this); 
var searchtype = t.attr('data-searchtype'); 
if (searchtype == 'post') { 
$('#search_type_icon').removeClass('fa fa-picture-o').addClass('fa fa-video-camera'); 
$('[data-searchtype]').attr('data-searchtype', 'gallery').find('i').removeClass('fa fa-video-camera').addClass('fa fa-picture-o'); 
} else { 
$('#search_type_icon').removeClass('fa fa-video-camera').addClass('fa fa-picture-o'); 
$('[data-searchtype]').attr('data-searchtype', 'post').find('i').removeClass('fa fa-picture-o').addClass('fa fa-video-camera'); 
} 
$('.searchbox #search_type').attr('value', searchtype); 
} 
$(document).ready(function(){ 
$('.searchbox .drop_search [data-searchtype]').click(SearchPostValue); 
}); 
</script> 

nichts funktionierte :) Es ist eine Schande für mich, aber ich verbrachte Stunden und ich kann es nicht herausgefunden, wie ich

wollen

Wenn ich auf das Foto-Symbol klicken Ich möchte den Wert ändern = „post“ auf value =“ Galerie "Wenn ich auf das Foto-Icon klicke, passiert nichts.

Mein css

.select_search { 
position:absolute; 
right: 40px; 
z-index:10; 
display:inline-block; 
width:58px; 
height:31px; 
cursor:pointer; 
vertical-align:middle; 
} 

.select_search .wrs { 
position:relative; 
z-index:11; 
display:block; 
height:29px; 
text-align:center; 
} 

.select_search:hover .wrs { 
} 


.fa-caret-down { 
position:absolute; 
top:6px; 
right:7px; 
width:7px; 
height:4px; 
-webkit-transition:0 .4s ease-in-out; 
-moz-transition:0 .4s ease-in-out; 
-o-transition:0 .4s ease-in-out; 
transition:transform .4s ease-in-out; 
background-position:-300px 0; 
} 

.drop_search { 
position:absolute; 
z-index:10; 
top:26px; 
left:0; 
display:none; 
width:58px; 
text-align:center; 
} 

.drop_search span { 
display:block; 
padding:0 0 4px; 
} 

.select_search:hover .drop_search { 
display:block; 
} 
.select_search:hover .fa-caret-down { 
-webkit-transform:rotateZ(-180deg); 
-moz-transform:rotateZ(-180deg); 
transform:rotateZ(-180deg); 
position:absolute; 
top:16px; 
right:7px; 
width:7px; 
height:4px; 
} 

.fa-video-camera { 
width:20px; 
height:14px; 
margin:6px 5px 0 0; 
} 

.fa-picture-o { 
width:20px; 
height:14px; 
margin:6px 5px 0 0; 
} 

EDIt alle html

<div class="searchbox"> 
<form action="<?php echo home_url('/'); ?>" method="get"><button name="search" type="submit" class="btn"> 
<span></span></button> 
<input type="text" id="s" name="s" value="" /> 

<input type="hidden" id="#search_type" name="post_type" value="post" /> 

<div class="select_search"> 

<span class="wrs"> 
<i class="fa fa-video-camera" id="search_type_icon"></i> 
<i class="fa fa-caret-down"></i> 
</span> 

<div class="drop_search"> 
<span data-searchtype="photos"> 
<i class="fa fa-picture-o"></i> 
</span> 
</div> 

</div> 
</form> 
</div> 
<script type="text/javascript"> 
function SearchPostValue(e) { 
e.preventDefault(); 
var t = $(this); 
var searchtype = t.attr('data-searchtype'); 
if (searchtype == 'post') { 
$('#search_type_icon').removeClass('fa fa-picture-o').addClass('fa fa-video-camera'); 
$('[data-searchtype]').attr('data-searchtype', 'gallery').find('i').removeClass('fa fa-video-camera').addClass('fa fa-picture-o'); 
} else { 
$('#search_type_icon').removeClass('fa fa-video-camera').addClass('fa fa-picture-o'); 
$('[data-searchtype]').attr('data-searchtype', 'post').find('i').removeClass('fa fa-picture-o').addClass('fa fa-video-camera'); 
} 
$('.searchbox #search_type').attr('value', searchtype); 
} 
$(document).ready(function(){ 
$('.searchbox .drop_search [data-searchtype]').click(SearchPostValue); 
}); 
</script> 
+0

Haben Sie die Funktion menuSearchClick einem Ereignis-Listener zugewiesen? Ich sehe keine im obigen Code. – litel

+0

Es tut mir leid, aber ich bin kein JS Experte Ich habe gerade eine Forschung über Google und alle meine Code ist dies wissen Sie eine andere Methode? Wo sollte ich 'menuSearchClick' hinzufügen – Gazi

+0

Welche Klasse/ID/Element möchten Sie die Interaktion auftreten auf? Was willst du '$ (this)' sein? – litel

Antwort

1

Sie haben keine '#searchform #search_type' Element in den HTML-Code Sie zur Verfügung gestellt, so dass nicht funktionieren. Fügen Sie diese ID (Such_Typ) zu Ihrem <input type="hidden" name="post_type" value="post" /> Element hinzu.

und statt es mit .attr Wechsel (‚Wert‘, newValue) Sie nur

$('#search_type').val(newValue); 

Als ob die menuSearchClick (e) Funktion ausgeführt verwenden könnten, sollten Sie überprüfen, dass mit einer Warnung () oder console.log ("check"). in dieser Funktion. Wenn diese Protokolle/Warnungen nicht angezeigt werden, können Sie Ihrem Icon div einen onclick = "menuSearchClick()" hinzufügen.

+0

danke für deine Hilfe und Antworten Ich habe '' in ' 'indem ich die ID' # search_type' hinzufüge, so wie ich sagte, vergesse ich die alte EARCH-Form-ID und ändere dit in '$ ('. searchbox #search_type').val (searchtype); 'aber wenn ich auf das zweite Icon klicke' 'ändert es nicht und entfernt das Kamerasymbol – Gazi

+0

Es tut mir leid, ich habe nicht bemerkt, dass du dir nicht bewusst bist des von jQuery verwendeten Selektors. Sie sollten etwas über sie hier lesen: http://www.w3schools.com/jquery/jquery_ref_selectors.asp Ich glaube, das wird helfen. id = "# search_type" sollte id = "search_type" sein Das # Zeichen lässt jQuery wissen, dass es nach Elementen suchen muss, deren ID mit der Zeichenfolge übereinstimmt. Haben Sie dem Symbolelement ein onclick-Ereignis hinzugefügt oder überprüft, ob die mouseSearchClick-Funktion ausgeführt wird? – ikdekker

+0

hankyou du hast mir so viel geholfen und ich habe es funktioniert mit '$ ('. Searchbox #search_type'). Attr ('Wert', Suchtyp); } $ (Dokument) .ready (Funktion() { $ ('. Searchbox .drop_search [Daten-Suchtyp]'). Click (menuSearchClick); }); 'Das einzige Problem ist Wert, der nicht ändert :) Jetzt ändern sich die Symbole jedoch, danke für all Ihre aufgewendete Zeit. – Gazi