Skip to content

Instantly share code, notes, and snippets.

@hachibeeDI
Created December 17, 2013 06:36
Show Gist options
  • Save hachibeeDI/8000965 to your computer and use it in GitHub Desktop.
Save hachibeeDI/8000965 to your computer and use it in GitHub Desktop.
フォーカスがあたるとリセットされるinput。何もいじらなければ、直前の内容が保持される。 coffeeと、コンパイル後のjs両方を添付。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>aaaa</title>
<link rel="stylesheet" href="./css/main.css" type="text/css" media="screen" charset="utf-8">
</head>
<body>
<input type="text" class="reset_onfocus" placeholder="aaaaaaaaa">
<input type="text" class="reset_onfocus" placeholder="aaaaaaaab">
<input type="text" class="reset_onfocus" placeholder="aaaaaaaac">
<script src="./main.js" charset="utf-8"></script>
</body>
</html>
'use strict'
CLS_RESET = 'reset_onfocus'
# for IE
extract_target = (event) -> event.target or event.srcElement
reset_texts = (e) ->
self = extract_target(e)
if self.value == ''
return
value_holder = self.value
edited = false
self.value = ''
edit_detector = (_e) -> edited = true
settle_out = (_e) ->
_self = extract_target(_e)
if not edited
_self.value = value_holder
self.removeEventListener('change', edit_detector)
self.removeEventListener('blur', settle_out)
self.addEventListener('change', edit_detector)
self.addEventListener('blur', settle_out)
resetable_inputes = document.getElementsByClassName(CLS_RESET)
for inp in resetable_inputes
inp.addEventListener('focus', reset_texts)
// Generated by CoffeeScript 1.6.3
(function() {
'use strict';
var CLS_RESET, extract_target, inp, reset_texts, resetable_inputes, _i, _len;
CLS_RESET = 'reset_onfocus';
extract_target = function(event) {
return event.target || event.srcElement;
};
reset_texts = function(e) {
var edit_detector, edited, self, settle_out, value_holder;
self = extract_target(e);
if (self.value === '') {
return;
}
value_holder = self.value;
edited = false;
self.value = '';
edit_detector = function(_e) {
return edited = true;
};
settle_out = function(_e) {
var _self;
_self = extract_target(_e);
if (!edited) {
_self.value = value_holder;
}
self.removeEventListener('change', edit_detector);
return self.removeEventListener('blur', settle_out);
};
self.addEventListener('change', edit_detector);
return self.addEventListener('blur', settle_out);
};
resetable_inputes = document.getElementsByClassName(CLS_RESET);
for (_i = 0, _len = resetable_inputes.length; _i < _len; _i++) {
inp = resetable_inputes[_i];
inp.addEventListener('focus', reset_texts);
}
}).call(this);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment