Jquery 后端转发器字段上的10月CMS javascript事件
在一个项目中使用十月CMS,我尝试在后端转发器字段上添加一个javascript事件。但是,似乎repeater动态添加的输入字段在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
<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