html5 search使用,HTML5搜索输入不与引导工作(html5 search input does not work w

本文介绍了一个Angular自定义指令的实现方式,该指令用于在用户界面上提供一种清除搜索输入的方法。通过使用属性选择器或者aria-describedby属性,该指令能够定位到相应的搜索输入框并清空其内容。
摘要由CSDN通过智能技术生成

要跨所有设备相同的用户体验,我最后写一个角指令,我把引导“输入组BTN的。

斜视HTML

placeholder="Search text..."

title="Search" aria-label="Search"

data-ng-model-options="{'debounce':1500, 'updateOn':'blur default'}"

data-ng-model="vm.filters.listItemSearchText"/>

data-ng-disabled="!vm.filters.listItemSearchText"

aria-describedby="listItemSearch"

data-clear-search-by-aria="#listItemSearch">

{{vm.models.listSearchResults.length}}

/

{{vm.data.list.length}}

角指令的JavaScript

.directive( 'clearSearchByAria', ['$parse', function clearSearchByAria( $parse )

{

return(

{

'restrict':'A',

'link':function clearSearchByAria_link( scope, jqElem, ngAttr )

{

jqElem.on( 'click', function( $event )

{

var $clickedElem = angular.element($event.currentTarget);

var $searchInput;

// Specified by selector.

if( !!ngAttr.clearSearchByAria )

{

var $specifiedElem = angular.element(ngAttr.clearSearchByAria)

if( $specifiedElem.length == 1 )

{$searchInput = $specifiedElem;}

}

else

{

var $describedElem = $clickedElem.find( '[aria-describedby]' ).addBack( '[aria-describedby]' );

// Specified by 'aria-describedby'.

if( $describedElem.length == 1 )

{$searchInput = angular.element(''.concat( '#', $describedElem.attr('aria-describedby')));}

else

{

throw( new ReferenceError( "'clear-search-by-aria' attributes requires either 1) to be empty and for the element (or a descendant) to have an 'aria-describedby' attribute referring to another element or 2) to specify an element selector (e.g. '#id') to another element." ));

}

}

if( !!$searchInput && $searchInput.length == 1 )

{

var ng_model = $searchInput.data( 'ngModel' ) || $searchInput.attr( 'ng-model' );

if( !!ng_model )

{

var modelGetter = $parse( ng_model );

modelGetter.assign( scope, '' );

scope.$apply();

}

else

{

$searchInput.val( '' );

}

}

});

},

});

}])`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值