在导航栏中的搜索表单上使用jQuery for Action Listeners
Using jQuery for Action Listeners on a Search Form in a Navbar
我一直在尝试为Bootstrap Navbar中的下拉菜单正确添加一个操作事件侦听器。到目前为止,我实现它的方式是有效的,但我一直试图将代码压缩为一个动作侦听器,以便在添加其他动作侦听器时使用。此外,当输入的值为空时,我似乎无法替换搜索输入元素的属性占位符:
var main = function(){
$('#searchStream').click(function(event) {
$('#searchMethod').html("Streams <span class='"caret'"></span> ");
})
$('#searchPlayer').click(function(event) {
$('#searchMethod').html("Players <span class='"caret'"></span> ");
})
$('$submitSearch').click(function(event){
var searchMethod = $('#searchMethod').val();
var method = "";
if(searchMethod.find('Streams') == true){
method = "Streams";
}
else if(searchMethod.find('Players') == true){
method = "Players";
}
else if ($('#searchInput').val() == "") {
$('input').attr("placeholder","Enter Search Term");
}
})
}
以下是使用动作侦听器的元素的HTML:
<li><form name = "search" class="navbar-form navbar-right" role="search">
<div class="form-group">
<input type="text" class="form-control" id="searchInput" placeholder="Search" />
</div>
<!-- Search Dropdown -->
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false" id="searchMethod">Search <span class="caret"></span> </button>
<ul class="dropdown-menu" role="menu" id="searchMenu">
<li id="searchStream"><a href="#">Streams</a></li>
<li id="searchPlayer"><a href="#">Players</a></li>
</ul>
</div></li>
<!-- Search Submit Button -->
<button type="submit" class="btn btn-default" id="submitSearch">Submit</button>
</form></li>
</ul>
下面是我尝试为下拉菜单操作监听器压缩jQuery的一个示例:
$('#searchMenu').children().click(function(event){
var elementText = $(this).val();
if($.contains($(this), "Streams") == true) {
$('#searchMethod').html("Streams <span class='"caret'"></span> ");
}
elseif($.contains($(this), "Players") == true) {
$('#searchMethod').html("Players <span class='"caret'"></span> ");
}
})
我尝试过使用多个实现,但一直未能使其发挥作用。我甚至在"=="answers"==="之间切换,或者在"elseif"answers"else-if"之间切换。
对于带有下拉按钮文本更改的第一部分,您可以使用以下代码:
$('#searchMenu li a').on('click', function (event) {
var elementText = $(this).text();
$('#search-text').text(elementText);
});
所以当你们点击任何一个下拉元素时,你们首先抓取它的文本,然后把它放在下拉按钮中。我已经用#search-text
id将下拉按钮文本包装在span元素中,这样就可以很容易地访问它。
关于提交表单部分:
$('form[name="search"]').on('submit', function(event){
var method = $('#search-text').text();
if ($('#searchInput').val() == "") {
$('input').attr("placeholder","Enter Search Term");
return false;
}
});
我更喜欢处理表单提交事件,而不是按钮点击,这样你也可以处理keybord和enter按键。您的代码没有显示您想要对method
变量执行的操作。你们可能想把它和表单一起传递,所以最好的方法是把值放在一些隐藏的字段中。
这是小提琴https://jsfiddle.net/mxug7fqt/
相关文章:
- 使用jQuery for RSS看不到多个帖子
- 去掉jQuery for.css()修改,直接使用AngularJS
- JavaScript to jQuery for KendoUI
- Javascript/JQuery for Datatables
- 在导航栏中的搜索表单上使用jQuery for Action Listeners
- jQuery for Regexp 不起作用
- 在 jQuery for Textbox 中更改函数
- jQuery for HTML to PHP - Function Error
- WebSQL: jQuery for each error
- 使用 jQuery for Website 的动态下拉菜单
- 无法从 jquery for phonegap 应用程序中的 url 获取 JSON 数据作为文本
- Loop jQuery for each child
- Jquery for 复选框不适用于模型弹出窗口
- Ajax可以在不使用jquery的情况下使用吗?或者我需要 jquery for ajax
- 在执行 ajax 调用返回错误时中断 jquery for 循环
- 获取带有 jQuery for 循环的值
- XML 解析与 Jquery for IE7+ 和 Mozilla
- jquery for循环不起作用
- Don't使用谷歌托管的CDN jQuery for Shopify-what'这是另一种选择
- 尽管存在条件,jQuery for循环只运行一次