Skip to content

Commit

Permalink
updated
Browse files Browse the repository at this point in the history
added ToastPlugin
  • Loading branch information
Bodil-X committed May 22, 2012
1 parent 0192056 commit 5049800
Show file tree
Hide file tree
Showing 7 changed files with 407 additions and 17 deletions.
14 changes: 14 additions & 0 deletions assets/www/js/ToastPlugin.js
@@ -0,0 +1,14 @@
/**
* Created with IntelliJ IDEA.
* User: DotNEt
* Date: 12-5-22
* Time: 下午1:00
* To change this template use File | Settings | File Templates.
*/
var ToastPlugin = function () {};
ToastPlugin.prototype.makeText = function (showText, succCallBack, failureCallBack) {
return PhoneGap.exec(succCallBack, failureCallBack, 'ToastPlugin', 'makeText', [showText]);
}
PhoneGap.addConstructor(function () {
PhoneGap.addPlugin('ToastPlugin', new ToastPlugin());
});
258 changes: 258 additions & 0 deletions assets/www/js/jquery.maskedinput-1.3.js
@@ -0,0 +1,258 @@
/*
Masked Input plugin for jQuery
Copyright (c) 2007-2011 Josh Bush (digitalbush.com)
Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
Version: 1.3
*/
(function($) {
var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask";
var iPhone = (window.orientation != undefined);

$.mask = {
//Predefined character definitions
definitions: {
'9': "[0-9]",
'a': "[A-Za-z]",
'*': "[A-Za-z0-9]"
},
dataName:"rawMaskFn"
};

$.fn.extend({
//Helper Function for Caret positioning
caret: function(begin, end) {
if (this.length == 0) return;
if (typeof begin == 'number') {
end = (typeof end == 'number') ? end : begin;
return this.each(function() {
if (this.setSelectionRange) {
this.setSelectionRange(begin, end);
} else if (this.createTextRange) {
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', end);
range.moveStart('character', begin);
range.select();
}
});
} else {
if (this[0].setSelectionRange) {
begin = this[0].selectionStart;
end = this[0].selectionEnd;
} else if (document.selection && document.selection.createRange) {
var range = document.selection.createRange();
begin = 0 - range.duplicate().moveStart('character', -100000);
end = begin + range.text.length;
}
return { begin: begin, end: end };
}
},
unmask: function() { return this.trigger("unmask"); },
mask: function(mask, settings) {
if (!mask && this.length > 0) {
var input = $(this[0]);
return input.data($.mask.dataName)();
}
settings = $.extend({
placeholder: "_",
completed: null
}, settings);

var defs = $.mask.definitions;
var tests = [];
var partialPosition = mask.length;
var firstNonMaskPos = null;
var len = mask.length;

$.each(mask.split(""), function(i, c) {
if (c == '?') {
len--;
partialPosition = i;
} else if (defs[c]) {
tests.push(new RegExp(defs[c]));
if(firstNonMaskPos==null)
firstNonMaskPos = tests.length - 1;
} else {
tests.push(null);
}
});

return this.trigger("unmask").each(function() {
var input = $(this);
var buffer = $.map(mask.split(""), function(c, i) { if (c != '?') return defs[c] ? settings.placeholder : c });
var focusText = input.val();

function seekNext(pos) {
while (++pos <= len && !tests[pos]);
return pos;
};
function seekPrev(pos) {
while (--pos >= 0 && !tests[pos]);
return pos;
};

function shiftL(begin,end) {
if(begin<0)
return;
for (var i = begin,j = seekNext(end); i < len; i++) {
if (tests[i]) {
if (j < len && tests[i].test(buffer[j])) {
buffer[i] = buffer[j];
buffer[j] = settings.placeholder;
} else
break;
j = seekNext(j);
}
}
writeBuffer();
input.caret(Math.max(firstNonMaskPos, begin));
};

function shiftR(pos) {
for (var i = pos, c = settings.placeholder; i < len; i++) {
if (tests[i]) {
var j = seekNext(i);
var t = buffer[i];
buffer[i] = c;
if (j < len && tests[j].test(t))
c = t;
else
break;
}
}
};

function keydownEvent(e) {
var k=e.which;

//backspace, delete, and escape get special treatment
if(k == 8 || k == 46 || (iPhone && k == 127)){
var pos = input.caret(),
begin = pos.begin,
end = pos.end;

if(end-begin==0){
begin=k!=46?seekPrev(begin):(end=seekNext(begin-1));
end=k==46?seekNext(end):end;
}
clearBuffer(begin, end);
shiftL(begin,end-1);

return false;
} else if (k == 27) {//escape
input.val(focusText);
input.caret(0, checkVal());
return false;
}
};

function keypressEvent(e) {
var k = e.which,
pos = input.caret();
if (e.ctrlKey || e.altKey || e.metaKey || k<32) {//Ignore
return true;
} else if (k) {
if(pos.end-pos.begin!=0){
clearBuffer(pos.begin, pos.end);
shiftL(pos.begin, pos.end-1);
}

var p = seekNext(pos.begin - 1);
if (p < len) {
var c = String.fromCharCode(k);
if (tests[p].test(c)) {
shiftR(p);
buffer[p] = c;
writeBuffer();
var next = seekNext(p);
input.caret(next);
if (settings.completed && next >= len)
settings.completed.call(input);
}
}
return false;
}
};

function clearBuffer(start, end) {
for (var i = start; i < end && i < len; i++) {
if (tests[i])
buffer[i] = settings.placeholder;
}
};

function writeBuffer() { return input.val(buffer.join('')).val(); };

function checkVal(allow) {
//try to place characters where they belong
var test = input.val();
var lastMatch = -1;
for (var i = 0, pos = 0; i < len; i++) {
if (tests[i]) {
buffer[i] = settings.placeholder;
while (pos++ < test.length) {
var c = test.charAt(pos - 1);
if (tests[i].test(c)) {
buffer[i] = c;
lastMatch = i;
break;
}
}
if (pos > test.length)
break;
} else if (buffer[i] == test.charAt(pos) && i!=partialPosition) {
pos++;
lastMatch = i;
}
}
if (!allow && lastMatch + 1 < partialPosition) {
input.val("");
clearBuffer(0, len);
} else if (allow || lastMatch + 1 >= partialPosition) {
writeBuffer();
if (!allow) input.val(input.val().substring(0, lastMatch + 1));
}
return (partialPosition ? i : firstNonMaskPos);
};

input.data($.mask.dataName,function(){
return $.map(buffer, function(c, i) {
return tests[i]&&c!=settings.placeholder ? c : null;
}).join('');
})

if (!input.attr("readonly"))
input
.one("unmask", function() {
input
.unbind(".mask")
.removeData($.mask.dataName);
})
.bind("focus.mask", function() {
focusText = input.val();
var pos = checkVal();
writeBuffer();
var moveCaret=function(){
if (pos == mask.length)
input.caret(0, pos);
else
input.caret(pos);
};
($.browser.msie ? moveCaret:function(){setTimeout(moveCaret,0)})();
})
.bind("blur.mask", function() {
checkVal();
if (input.val() != focusText)
input.change();
})
.bind("keydown.mask", keydownEvent)
.bind("keypress.mask", keypressEvent)
.bind(pasteEventName, function() {
setTimeout(function() { input.caret(checkVal(true)); }, 0);
});

checkVal(); //Perform initial check for existing values
});
}
});
})(jQuery);
7 changes: 5 additions & 2 deletions assets/www/page/index.html
Expand Up @@ -10,7 +10,10 @@
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/cordova-1.7.0.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/NetDroidPlugin.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/ToastPlugin.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.mobile-1.1.0.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.validate.min.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.maskedinput-1.3.min.js"></script>

<link type="text/css" href="../css/jquery.mobile-1.1.0.min.css" rel="stylesheet"/>
<style type="text/css">
Expand Down Expand Up @@ -91,7 +94,7 @@ <h1>IpConfig</h1>
<div data-role="footer" data-position="fixed" data-theme="b">
<div data-role="navbar" data-iconpos="top" data-theme="b">
<ul>
<li><a href="setting.html" data-transition="slideup" data-icon="gear">Setting</a></li>
<li><a href="setting.html" data-transition="slidefade" data-icon="gear">Setting</a></li>
<li><a href="javascript:window.confirm('Close the app now?')?navigator.app.exitApp():void(0);"
data-icon="back">Exit</a></li>
</ul>
Expand All @@ -102,7 +105,7 @@ <h1>IpConfig</h1>
data-transition="flip">
<div data-role="content">
<a href="javascript:navigator.app.exitApp();" data-role="button">Exit</a>
<a href="setting.html" data-transition="slideup" data-role="button">Setting</a>
<a href="setting.html" data-transition="slidefade" data-role="button">Setting</a>
<a href="javascript:void(0);" data-role="button" data-rel="back">Back</a>
</div>
</div>
Expand Down

0 comments on commit 5049800

Please sign in to comment.