Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 后端转发器字段上的10月CMS javascript事件_Jquery_Octobercms - Fatal编程技术网

Jquery 后端转发器字段上的10月CMS javascript事件

Jquery 后端转发器字段上的10月CMS javascript事件,jquery,octobercms,Jquery,Octobercms,在一个项目中使用十月CMS,我尝试在后端转发器字段上添加一个javascript事件。但是,似乎repeater动态添加的输入字段在javascript中看不到,而它与相同形式的其他输入字段一起工作 我的脚本如下: <script> $('input').on('keypress', function(e){ // only numbers if ( charCode < 48 || charCode > 57 ) { re

在一个项目中使用十月CMS,我尝试在后端转发器字段上添加一个javascript事件。但是,似乎repeater动态添加的输入字段在javascript中看不到,而它与相同形式的其他输入字段一起工作

我的脚本如下:

<script>
  $('input').on('keypress', function(e){
      // only numbers
      if ( charCode < 48 || charCode > 57 ) {
          return false;
      }
      return true;
  });
</script>

$('input')。在('keypress',函数(e)上{
//只有数字
如果(字符码<48 | |字符码>57){
返回false;
}
返回true;
});
你有办法让它工作吗

提前感谢和问候, 帕特里克

你说过:-
似乎repeater动态添加的输入字段在javascript中看不到,而它与相同形式的其他输入字段一起工作

这是一个正确的行为,因为事件绑定是在页面加载时完成的,之后您创建了新元素,所以事件不会绑定到这些元素上

您必须使用称为事件委派的技术。比如:

  $(document).on('keypress', 'input', function(e){
      // the code 
  });
在此代码中,您可以将
$(document)
更改为最接近的静态父级,如任何
div、表单等。

$('form').on('keypress', 'input', function(){
   // code here
});

因此,语法是:

$(staticParent).on(event, selector, callback);  
其中staticParent是加载页面时作为父元素的元素。它不应该是动态创建的父对象。

十月在通过$.request或其他方法添加新元素后,在页面上触发事件“render”

所以,你可以预先听:

$(window).on('render', function() {
    $('input').on('keypress', function(e){
    }
});
唯一的问题是,事情会变得“双重”按键

P>为此,十月建议使用基础框架模式。这样,如果页面上已经存在元素,事件侦听器将只绑定一次,而不会绑定两次

+函数($){“使用严格”;
var基础= $.O.Fuff.Basic,
BaseProto=Base.prototype
var SomeDisposableControl=函数(元素、选项){
此.$el=$(元素)
this.options=options | |{}
$MICROPUTION(元素)
基地。呼叫(本)
this.init()
}
SomeDisposableControl.prototype=Object.create(BaseProto)
SomeDisposableControl.prototype.constructor=SomeDisposableControl
SomeDisposableControl.prototype.init=函数(){
this.el.on('click',this.proxy(this.onClick))
this.$el.one('dispose-control',this.proxy(this.dispose))
}
SomeDisposableControl.prototype.dispose=函数(){
this.el.off('click',this.proxy(this.onClick))
this.$el.off('dispose-control',this.proxy(this.dispose))
此.$el.removeData('oc.someDisposableControl'))
此值为$el=null
//在某些情况下,选项可能包含回调,
//所以最好也把它们清理干净。
this.options=null
BaseProto.dispose.call(此)
}
SomeDisposableControl.DEFAULTS={
someParam:null
}
//插件定义
// ============================
var old=$.fn.someDisposableControl
$.fn.someDisposableControl=函数(选项){
var args=Array.prototype.slice.call(参数,1),items,result
items=此。每个(函数(){
变量$this=$(this)
var data=$this.data('oc.someDisposableControl')
var options=$.extend({},SomeDisposableControl.DEFAULTS,$this.data(),typeof option=='object'&&option)
如果(!data)$this.data('oc.someDisposableControl',(data=new someDisposableControl(this,options)))
if(typeof option=='string')result=data[option].apply(data,args)
if(typeof result!=“undefined”)返回false
})
返回结果?结果:项目
}
$.fn.someDisposableControl.Constructor=someDisposableControl
$.fn.someDisposableControl.noConflict=函数(){
$.fn.someDisposableControl=旧
还这个
}
//仅在需要时添加此选项
$(文档).render(函数(){
$(“[data some disposable control]”)。someDisposableControl()
})
}(window.jQuery)太棒了:-)非常感谢你,洁,你让我开心了:-D