我正在使用名为客户端验证(here)的Rails gem,其名称完全如其名称所示。 我注意到它只是第一次加载页面而不是再次运行,然后我意识到这是因为整个ajax加载的东西没有触发ready()事件。所以我切换了库的相关部分以使用pageinit,现在没有任何反应。我收到了警告消息,但验证没有触发。
针对不再有效的jQM调整的代码。
// $(document).bind('pageinit', function() {
// alert(1)
// ClientSideValidations.disableValidators();
// return $(ClientSideValidations.selectors.forms).validate();
// });
原始的“工作”代码。
$(function() {
alert(1)
ClientSideValidations.disableValidators();
return $(ClientSideValidations.selectors.forms).validate();
});
除了这段代码之外,我没有更改任何其他内容。
答案 0 :(得分:1)
尝试以下内容并查看
$(document).on('pageshow', function() {
alert(1)
ClientSideValidations.disableValidators();
return $(ClientSideValidations.selectors.forms).validate();
});
如果您希望在第一次加载页面时触发它,请使用pagecreate
,或者如果您希望每次刷新页面时都触发它,请使用pageshow
理想情况下,您可以将其设为特定于以下页面。让我们假设页面ID是testpage
$(document).on('pageshow', '#testpage', function() {
alert(1)
ClientSideValidations.disableValidators();
return $(ClientSideValidations.selectors.forms).validate();
});
如果您坚持使用pageinit
,请尝试按以下方式
$( "#testpage" ).on( "pageinit", function( event ) {
alert( "This page was just enhanced by jQuery Mobile!" );
});
答案 1 :(得分:1)
当您在页面上时,您的网页组件尚未存在,因此您无法设置验证或尝试查找任何内容。它主要用于设置全局配置,变量和预配置。
正如Mayu所说,正确的方法是使用on with pageshow。