当我想添加影响表单的自定义jQuery代码时,我遇到了一些问题。
例如,当有人点击输入或单选按钮时,要隐藏或显示另一个输入或元素。我试图在点击时获得console.log('trigger');
之类的结果,或者在开发中没有其他内容。控制台出现了。另外,我尝试了以下方法:
使用click
致电.on('click', function()...
活动或使用.trigger('click');
致电活动,或将活动更改为change
要将脚本嵌入来自忍者表单的文件中,或将其放在body
footer.php
标记末尾的页面内
要将jQuery的开始声明更改为在以下函数内工作:(function($) {$(document).ready(function(){.....
我知道我可以尝试另一个插件,我尝试了一个,自定义jQuery可以工作,但我真的很喜欢这个,不知道为什么会这样...
由于
答案 0 :(得分:26)
不确定您是否需要帮助,因为自您发布问题以来已经过了一段时间,但这可能在将来帮助其他人。我有相同/类似的问题,无法在Ninja Forms上运行JS / jQuery,并发现这是因为Ninja Forms异步加载它们的表单。因此,当您的document.ready函数运行时,表单尚不存在且无法绑定。
Ninja Forms有自己的事件就绪状态,可以按如下方式使用:
jQuery(document).on( 'nfFormReady', function( e, layoutView ) {
// Your code goes here...
});
答案 1 :(得分:-1)
事件未被注册只是因为您尝试绑定事件的元素在当时尚未存在(在文档加载时)。 Ninja表单以异步方式加载表单内容,因此您必须等到表单完全加载后再添加事件侦听器。 这对我有用:
var formExists = setInterval(function() {
if ($(".nf-form-cont").length) {
// Set your event listeners here, example:
$("#nf-field-1").click(function(e) {
console.log("click!");
}
clearInterval(formExists);
}
}, 100); // check every 100ms