rendered paste bodyfunction kyanFormMagic() {
this.initialCallbacks = []
this.dependency = function( element, target, condition, options ) {
// Turn first argument into an array of applicable elements
var elements = this.toElementArray(element);
// Turn first argument into an array of applicable elements
target = this.toFormElement(target);
if(!target) {return;}
var targetType = target.nodeName.toLowerCase() == 'input' ? target.type.toLowerCase() : target.nodeName.toLowerCase();
switch(targetType) {
case 'radio':
case 'checkbox':
for(var i = 0; i < elements.length; i++) {
var callback = this.checkableCallback(target, elements[i], condition);
this.addEvent(target, 'click', callback);
callback();
}
}
}
this.checkableCallback = function(target, dependent_element, value) {
return function(event) {
dependent_element.disabled = (target.checked == !value);
if(event) { kfm.log(event.type + ' ' + target.checked); }
}
}
this.toElementArray = function(arg) {
if(typeof arg == 'object' && arg.length) {
var out = [];
for(var i = 0; i < arg.length; i++) {
out[out.length] = this.toElement(arg[i]);
}
return out;
} else {
return [this.toElement(arg)];
}
}
this.toElement = function(arg) {
if(typeof arg == 'string') {
return document.getElementById(arg);
} else if(arg.nodeName) {
return arg;
} else {
return null;
}
}
this.toFormElement = function(arg) {
var element = this.toElement(arg);
var nn = element.nodeName ? element.nodeName.toLowerCase() : 'null';
switch(nn) {
case 'input':
case 'select':
case 'textarea':
return element;
default:
return null;
}
}
this.addEvent = function(obj, evType, fn){
if (obj.addEventListener){
obj.addEventListener(evType, fn, false);
return true;
} else if (obj.attachEvent){
var r = obj.attachEvent("on"+evType, fn);
return r;
} else {
return false;
}
}
this.log = function(text) {
document.getElementById('log').innerHTML += text;
document.getElementById('log').innerHTML += "<br>";
}
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Page Title</title>
<script type='text/javascript'>
</script>
</head>
<body>
<form action=''>
<input id='one' type='checkbox' checked>
<input id='two' type='checkbox'>
</form>
<script type='text/javascript' src='form.js'>
</script>
<script type='text/javascript'>
window.kfm = new kyanFormMagic();
kfm.dependency('two', 'one', true);
</script>
<div id='log'></div>
</body>
</html>