Android + PhoneGap + jQuery Validate - not firing
Android + PhoneGap + jQuery Validate - not firing
我正在使用jQuery Mobile和jQuery Validate。我有多个表单,一旦所有页面都完成,就会使用 ajax 序列化发布。
下面的"下一步"按钮适用于从本机浏览器访问的iOS和Android。当我使用 PhoneGap 打包并在 Android 上运行时,验证不会触发。其他一切正常。
如果我删除 valid() 条件,按钮将按预期工作。所以这一定是我如何使用jQuery Validate的问题。
我尝试过以各种方式改变事物的顺序。我试过:
if (!$("#infofm").valid()) {
和
if($("#infofm").valid()) {
始终相同的结果 - 在本机浏览器中有效,但在 PhoneGap 之后则不然。我已经为此苦苦挣扎了很长时间。下面是相关代码。任何帮助将不胜感激。谢谢!
$(function(){
$('a#nxt1').bind('click', function(event, ui) {
infoval();
});
function infoval(){
var isvalidate=$("#infofm").valid();
if(isvalidate) {
$.mobile.changePage('#towertop', {transition: 'slidefade'});
} else {
alert("Please fill in all fields on this page before proceding");
}
};
$(document).ready( function(){
$("#infofm").validate({ errorPlacement: function(error, element) {} }); });
和
<a href="" id="nxt1" data-iconpos="bottom" data-theme="a" data-icon="arrow-r">Next Step</a>
对于jQuery Mobile,你需要使用....
$(document).on('pageinit', function(){
而不是
$(document).ready(function(){
请参阅:http://jquerymobile.com/demos/1.2.0/docs/api/events.html
重要:使用
$(document).bind('pageinit')
,而不是$(document).ready()
你在 jQuery 中学到的第一件事是调用
$(document).ready()
功能,因此一切都将在 DOM 已加载。但是,在jQuery Mobile中,Ajax用于加载 导航时每个页面的内容进入 DOM,并且 DOM 准备就绪 处理程序仅对第一页执行。在任何时候执行代码 加载并创建新页面后,可以绑定到pageinit
事件。
我的javaScript代码在捆绑到Phonegap应用程序中时没有被调用(在我的情况下是在iOS上)。我构建了一个具有多个屏幕和按钮的 Web 应用程序,这些屏幕和按钮根据用户交互进行隐藏或显示。
使用与XCode捆绑在一起的iOS模拟器时,您可以在Safari中看到生成的Web应用程序的源代码(在"开发"菜单下,必须在Safari首选项中启用开发人员工具)。在源代码中,我注意到我所有的应用程序 html 页面都合并为一个,唯一包含的 javascript 来自第一页(默认索引.html) - 页面中的所有其他元素都已从文件中删除。所以我改变了
$(document).ready(function(){
...
});
自
$(document).on('pageinit', function(){
...
});
(感谢Sparky,上面的回答)并将以下页面中的所有jquery js代码添加到index.html中。例如,我添加了以下行以隐藏其中一个页面上的div:
$("#cancelButtonDiv").hide();
现在正在执行代码,并且正在正确调用我的按钮上指定的方法。
- WebSocket onmessage not firing
- Backbone model.change() not firing
- codemirror onKeyEvent not firing
- Dojo onBeforeTransitionIn not firing
- CSS TransitionEnd not firing
- RegisterClientScriptBlock - not firing
- GWT History.back() is not firing onValueChangeHandler
- Signalr connection.start.done not firing
- Javascript XMLHttpRequest onreadystatechanged not firing?
- jstree select_node.jstree not firing
- Jquery not firing
- jQuery.on("drop") not firing
- Javascript window.onload not firing
- MVC 5 javascript not firing
- Javascript FileReader onload not firing
- setTimeout not firing jQuery
- setInterval() not firing
- $.getJSON not firing console.log
- Sails.js IO.socket not firing
- react componentDidMount not firing