javascript - 在焦点和更改上搜索输入

标签 javascript jquery css search input

我正在研究一个搜索表单,我喜欢它像 IOS 上的搜索表单一样工作(即 App Store) 在焦点输入字段延伸。 如果没有文本被插入到输入字段中,它返回到它的原始状态。 如果插入文本,它会保持拉伸(stretch)状态。

知道如何实现吗?非常感谢!

HTML

<i class="fa fa-search"></i> 
<input type="text" class="form-control-filter input-filter-sm" placeholder="Search">

CSS

.input-filter {
      width: calc (100% - 25px); 
      width: -webkit-calc(100% - 25px); 
      width: -moz-calc(100% - 25px); 
 }
.input-filter-sm {
      width: 75px; 
}

JQUERY

$( ".mobile-filter input" ).focusin(function(){
  $( ".mobile-filter input" ).addClass("input-filter");
  $( ".mobile-filter input" ).removeClass("input-filter-sm");
});

$( ".mobile-filter input" ).focusout(function(){
  $( ".mobile-filter input" ).removeClass("input-filter");
  $( ".mobile-filter input" ).addClass("input-filter-sm");
});

最佳答案

我对您的代码进行了一些更改,我更改了选择器并将该类添加到您的输入字段中。它现在正在工作。

$( "input.mobile-filter" ).focus(function(){
  $( "input.mobile-filter" ).addClass("input-filter")
  $( "input.mobile-filter" ).removeClass("input-filter-sm")
});

$( "input.mobile-filter" ).blur(function(){
   var textLen = $(this).val().length;
  if(textLen === 0) {
    $( "input.mobile-filter" ).removeClass("input-filter")
    $( "input.mobile-filter" ).addClass("input-filter-sm")
  }
});

你的 HTML

<i class="fa fa-search"></i> <input type="text" class="form-control-filter input-filter-sm mobile-filter" placeholder="Search">

DEMO FIDDLE

关于javascript - 在焦点和更改上搜索输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26013173/

相关文章:

javascript - 如何删除 Angular ng-repeat中最后一个li的<hr/>

javascript - js中根据分辨率计算字体大小

javascript - Angular js输入框如何在不改变的情况下传递ng-model呢?

javascript - 在数组中动态添加变量

asp.net-mvc - .net MVC处理由ajax加载的 View 编译错误

jQuery .animation 延迟问题

html - 将文本保留在我想要的位置? CSS/HTML

html - 当您指定多个类别时,将使用哪个类别?

c# - Selenium 2 WebDriver 未按预期评估更新的 DOM

javascript - 在 JavaScript 中生成所有可能的可变长度逗号分隔字符串组合