1

我正在使用一个名为 Client Side Validations ( 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();
  });

除了这段代码之外,我没有更改任何其他内容。

4

2 回答 2

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!" );
});

文档在这里

于 2013-05-28T06:05:12.813 回答
1

当您在 pageInit 上时,您的网页组件尚不存在,因此您无法设置验证或尝试查找任何内容。它主要用于设置全局配置、变量和预配置。

正如 Mayu 所说,正确的做法是使用 on with pageshow。

于 2013-05-28T13:54:12.083 回答