当输入字段集中于Click时,保持光标位置的一致性

时间:2015-06-18 10:24:04

标签: javascript jquery safari sapui5

我在Safari浏览器上运行的SAP UI5应用程序存在问题。

我要求onClick或点按任何输入字段,字段中的内容必须获得焦点或突出显示,如屏幕抓取1所示。

不幸的是,它有时会起作用。如果我在iPad上使用水龙头它不起作用。我是否必须添加任何新事件或阻止任何默认行为?

我试过这种方式:

this.$().click(function() {
  var uAgent = navigator.userAgent ;    
  var input = this.$().find('INPUT');    
  if( uAgent.match(/iPhone/) || uAgent.match(/iPad/) ) {    
    input.get(0).setSelectionRange(0,9999)
  }
  else 
  {
    input.select();    
  }
  this.fireClick({});
}.bind(this));

this.$().mouseup(function(e){
  e.preventDefault();
}.bind(this));
}

问题是上述解决方案仅在某些情况下有效,有时光标在末尾。但是,我想重点关注或突出显示点击,并使Safari和Chrome中的行为保持一致。你能帮忙解决一下如何防止screenclipping2中显示的行为吗?

Chrome上的屏幕剪辑1行为:

iPad上的屏幕剪辑2: 下面的代码也是我尝试过并且只工作了几次。如果我错过了什么,请你更正下面的代码。



sap.m.Input.extend('com.Warehousemgt.controllers.GoodsIssueDetail.ClickableInput', {
   metadata: {
     events : {
       click: {}
           }
   },
   renderer: {},
   onAfterRendering: function() {
		  if (sap.m.Input.prototype.onAfterRendering) {
	       sap.m.Input.prototype.onAfterRendering.apply(this, arguments);
	     }
       $('input').on('focus click touchstart touchend',function(e) { 
		   var ua   = navigator.userAgent ;
		 if( ua.match(/iPhone/) || ua.match(/iPad/) ) {   			   

 	             $(this).get(0).setSelectionRange(0,9999);
		    }else 
	           {  
                  $(this).select();
                   } 
   });
      $('input').on('mouseup',function(e) {
			  		e.preventDefault();
				     });
       }
	 });




0 个答案:

没有答案