Permalink
Browse files

Added toValue option feature, included jsmin ruby minifier, updated d…

…emo & readme
  • Loading branch information...
1 parent 16f368f commit 32df29d876d5b4a522e202999bd4927cdb3862a0 Joe Sak committed Mar 4, 2010
Showing with 236 additions and 8 deletions.
  1. +9 −1 README
  2. +16 −4 demo.html
  3. +3 −2 jquery.autofill.js
  4. +3 −1 jquery.autofill.min.js
  5. +205 −0 lib/jsmin.rb
View
10 README
@@ -6,4 +6,12 @@ Call the plugin like so:
defaultTextColor: '#666',
activeTextColor: '#333'
});
- });
+ });
+
+/*------- New Option (Mar 4 2010)------*/
+Now you can add your custom "toValue" to your inputs. For example, if you have a website field, you may want to pre-populate it with http://
+
+$('#txtWebsite').autofill({
+ value: 'Website',
+ toValue: 'http://'
+});
View
@@ -6,15 +6,23 @@
</head>
<body>
<p>
- <input type="text" id="name_field" />
+ <label>Default Behavior:</label><br />
+ <input type="text" id="txtName" />
</p>
<p>
+ <label>Search:</label><br />
<input type="text" id="txtSearch" />
</p>
<p>
- <input type="password" id="password" />
+ <label>Password:</label><br />
+ <input type="password" id="pwdPassword" />
+ </p>
+
+ <p>
+ <label>Web site:</label><br />
+ <input type="text" id="txtWebsite" />
</p>
<script src="http://www.google.com/jsapi"></script>
@@ -24,15 +32,19 @@
<script src="jquery.autofill.js"></script>
<script>
$(document).ready(function(){
- $('#name_field').autofill();
+ $('#txtName').autofill();
$('#txtSearch').autofill({
value: 'Search for Keyword(s)'
});
- $('#password').autofill({
+ $('#pwdPassword').autofill({
value: 'Password',
defaultTextColor: '#666',
activeTextColor: '#333'
});
+ $('#txtWebsite').autofill({
+ value: 'Website',
+ toValue: 'http://'
+ });
});
</script>
</body>
View
@@ -9,6 +9,7 @@
$.fn.autofill=function(options){
var defaults={
value:'First Name',
+ toValue:'',
defaultTextColor:"#666",
activeTextColor:"#333"};
@@ -35,12 +36,12 @@
p_obj.show()
.focus()
}
- obj.val("")
+ obj.val(options.toValue)
.css({color:options.activeTextColor});
}
})
.blur(function(){
- if(obj.val()==""){
+ if(obj.val()==options.toValue || obj.val() == ''){
obj.css({color:options.defaultTextColor})
.val(options.value);
}
View
@@ -6,4 +6,6 @@
* GitHub: http://github.com/joemsak/jQuery-AutoFill
*/
-(function($){$.fn.autofill=function(options){var defaults={value:'First Name',defaultTextColor:"#666",activeTextColor:"#333"};var options=$.extend(defaults,options);return this.each(function(){var obj=$(this);var pfield=(obj.attr('type')=='password');var p_obj=false;if(pfield){obj.hide();obj.after('<input type="text" id="'+this.id+'_autofill" class="'+$(this).attr('class')+'" />');p_obj=obj;obj=obj.next();}obj.css({color:options.defaultTextColor}).val(options.value);obj.focus(function(){if(obj.val()==options.value){if(pfield){obj.hide();p_obj.show().focus()}obj.val("").css({color:options.activeTextColor});}}).blur(function(){if(obj.val()==""){obj.css({color:options.defaultTextColor}).val(options.value);}});if(p_obj&&p_obj.length>0){p_obj.blur(function(){if(p_obj.val()==""){p_obj.hide();obj.show().css({color:options.defaultTextColor}).val(options.value);}});}});};})(jQuery);
+(function($){$.fn.autofill=function(options){var defaults={value:'First Name',toValue:'',defaultTextColor:"#666",activeTextColor:"#333"};var options=$.extend(defaults,options);return this.each(function(){var obj=$(this);var pfield=(obj.attr('type')=='password');var p_obj=false;if(pfield){obj.hide();obj.after('<input type="text" id="'+this.id+'_autofill" class="'+$(this).attr('class')+'" />');p_obj=obj;obj=obj.next();}
+obj.css({color:options.defaultTextColor}).val(options.value);obj.focus(function(){if(obj.val()==options.value){if(pfield){obj.hide();p_obj.show().focus()}
+obj.val(options.toValue).css({color:options.activeTextColor});}}).blur(function(){if(obj.val()==options.toValue||obj.val()==''){obj.css({color:options.defaultTextColor}).val(options.value);}});if(p_obj&&p_obj.length>0){p_obj.blur(function(){if(p_obj.val()==""){p_obj.hide();obj.show().css({color:options.defaultTextColor}).val(options.value);}});}});};})(jQuery);
View
@@ -0,0 +1,205 @@
+#!/usr/bin/ruby
+# jsmin.rb 2007-07-20
+# Author: Uladzislau Latynski
+# This work is a translation from C to Ruby of jsmin.c published by
+# Douglas Crockford. Permission is hereby granted to use the Ruby
+# version under the same conditions as the jsmin.c on which it is
+# based.
+#
+# /* jsmin.c
+# 2003-04-21
+#
+# Copyright (c) 2002 Douglas Crockford (www.crockford.com)
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy of
+# this software and associated documentation files (the "Software"), to deal in
+# the Software without restriction, including without limitation the rights to
+# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+# of the Software, and to permit persons to whom the Software is furnished to do
+# so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# The Software shall be used for Good, not Evil.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+EOF = -1
+$theA = ""
+$theB = ""
+
+# isAlphanum -- return true if the character is a letter, digit, underscore,
+# dollar sign, or non-ASCII character
+def isAlphanum(c)
+ return false if !c || c == EOF
+ return ((c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') ||
+ (c >= 'A' && c <= 'Z') || c == '_' || c == '$' ||
+ c == '\\' || c[0] > 126)
+end
+
+# get -- return the next character from stdin. Watch out for lookahead. If
+# the character is a control character, translate it to a space or linefeed.
+def get()
+ c = $stdin.getc
+ return EOF if(!c)
+ c = c.chr
+ return c if (c >= " " || c == "\n" || c.unpack("c") == EOF)
+ return "\n" if (c == "\r")
+ return " "
+end
+
+# Get the next character without getting it.
+def peek()
+ lookaheadChar = $stdin.getc
+ $stdin.ungetc(lookaheadChar)
+ return lookaheadChar.chr
+end
+
+# mynext -- get the next character, excluding comments.
+# peek() is used to see if a '/' is followed by a '/' or '*'.
+def mynext()
+ c = get
+ if (c == "/")
+ if(peek == "/")
+ while(true)
+ c = get
+ if (c <= "\n")
+ return c
+ end
+ end
+ end
+ if(peek == "*")
+ get
+ while(true)
+ case get
+ when "*"
+ if (peek == "/")
+ get
+ return " "
+ end
+ when EOF
+ raise "Unterminated comment"
+ end
+ end
+ end
+ end
+ return c
+end
+
+
+# action -- do something! What you do is determined by the argument: 1
+# Output A. Copy B to A. Get the next B. 2 Copy B to A. Get the next B.
+# (Delete A). 3 Get the next B. (Delete B). action treats a string as a
+# single character. Wow! action recognizes a regular expression if it is
+# preceded by ( or , or =.
+def action(a)
+ if(a==1)
+ $stdout.write $theA
+ end
+ if(a==1 || a==2)
+ $theA = $theB
+ if ($theA == "\'" || $theA == "\"")
+ while (true)
+ $stdout.write $theA
+ $theA = get
+ break if ($theA == $theB)
+ raise "Unterminated string literal" if ($theA <= "\n")
+ if ($theA == "\\")
+ $stdout.write $theA
+ $theA = get
+ end
+ end
+ end
+ end
+ if(a==1 || a==2 || a==3)
+ $theB = mynext
+ if ($theB == "/" && ($theA == "(" || $theA == "," || $theA == "=" ||
+ $theA == ":" || $theA == "[" || $theA == "!" ||
+ $theA == "&" || $theA == "|" || $theA == "?" ||
+ $theA == "{" || $theA == "}" || $theA == ";" ||
+ $theA == "\n"))
+ $stdout.write $theA
+ $stdout.write $theB
+ while (true)
+ $theA = get
+ if ($theA == "/")
+ break
+ elsif ($theA == "\\")
+ $stdout.write $theA
+ $theA = get
+ elsif ($theA <= "\n")
+ raise "Unterminated RegExp Literal"
+ end
+ $stdout.write $theA
+ end
+ $theB = mynext
+ end
+ end
+end
+
+# jsmin -- Copy the input to the output, deleting the characters which are
+# insignificant to JavaScript. Comments will be removed. Tabs will be
+# replaced with spaces. Carriage returns will be replaced with linefeeds.
+# Most spaces and linefeeds will be removed.
+def jsmin
+ $theA = "\n"
+ action(3)
+ while ($theA != EOF)
+ case $theA
+ when " "
+ if (isAlphanum($theB))
+ action(1)
+ else
+ action(2)
+ end
+ when "\n"
+ case ($theB)
+ when "{","[","(","+","-"
+ action(1)
+ when " "
+ action(3)
+ else
+ if (isAlphanum($theB))
+ action(1)
+ else
+ action(2)
+ end
+ end
+ else
+ case ($theB)
+ when " "
+ if (isAlphanum($theA))
+ action(1)
+ else
+ action(3)
+ end
+ when "\n"
+ case ($theA)
+ when "}","]",")","+","-","\"","\\", "'", '"'
+ action(1)
+ else
+ if (isAlphanum($theA))
+ action(1)
+ else
+ action(3)
+ end
+ end
+ else
+ action(1)
+ end
+ end
+ end
+end
+
+ARGV.each do |anArg|
+ $stdout.write "// #{anArg}\n"
+end
+
+jsmin

0 comments on commit 32df29d

Please sign in to comment.