2016-03-20 110 views
0

昨天我在这里创造一个话题Wordpress - How to change search value using a drop down selector?更改搜索值通过javascript

和我一起弗雷德里克帮助figuret,但一段时间后,我改变了我的想法,我删除选择,因为它不是里面输入好,比我创造了一些使用字体真棒图标现在至极链接正在寻找更好的

我最终的搜索形式是

<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> 

和我的JS

<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> 

毫无效果:)它的一个耻辱,我,但我花了几个小时,当我的图片图标,点击我要改变的值=“邮报”的价值我不出来,因为我想

=”画廊“,当我点击照片图标没有任何反应。

我的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; 
} 

编辑所有的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

您是否已将'menuSearchClick'函数分配给事件侦听器?我在上面的代码中看不到一个。 – litel

+0

对不起,但我不是一个js专家我只是做了一个关于谷歌的研究,我所有的代码是这样你知道任何其他方法吗?我应该在哪里添加'menuSearchClick' – Gazi

+0

你想要交互发生哪类/ id /元素上?你想要什么'$(this)'? – litel

回答

1

你对你所提供的HTML没有 '#searchform #search_type' 元素,让不会工作。 将该id(search_type)添加到您的<input type="hidden" name="post_type" value="post" />元素。和

不是与.attr(“值”,NEWVALUE)改变它,你可以只使用

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

至于是否被执行menuSearchClick(E)功能,你应该检查与警报( )或console.log(“检查”)。在那个函数里面。 如果这些日志/警报不显示,您可以添加一个onclick =“menuSearchClick()”到您的图标div。

+0

谢谢你的帮助和回复我把''改成了''通过添加ID##search_type'而不是像你说的那样我忘记了旧的搜索表单id,并将dit更改为'$('。searchbox #search_type')。VAL(检索类别);'但是当我在第二个图标点击''它不更改和删除相机图标 – Gazi

+0

我很抱歉,我不知道大家有没有注意到jQuery使用的'选择器'。你应该在这里读一下他们:http://www.w3schools.com/jquery/jquery_ref_selectors.asp 我相信这会有所帮助。 id =“#search_type”应该是id =“search_type” #号让jQuery知道它必须搜索id与该字符串匹配的元素。 您是否为图标元素添加了onclick事件,或者检查mouseSearchClick函数是否被执行? – ikdekker

+0

hankyou你帮了我很多,我使用 '$('。searchbox #search_type')。attr('value',searchtype); ('。searchbox .drop_search [data-searchtype]')。click(menuSearchClick); });'唯一的问题是值不会改变:)所以现在的图标正在改变,但感谢您的所有花费时间 – Gazi