var fn_correctOnKeyPress = function () {
	var re_ex_block = /^(?:.|[\r\n])*?\{((?:.|[\r\n])*)\}[^}]*$/;
	var re_normalize = /[ \t\r\n]+/g;
	var re_trim = /^[ \t]*(.+)[ \t]*$/;
	var elements=document.getElementsByTagName('*');
	for (i = 0; i < elements.length; i++) {
		var e = elements.item ? elements.item(i) : elements[i];
		// check specified both onkeypress and onclick
		if (e.onkeypress && e.onclick) {
			var e_onclick = e.onclick.toString()
				.replace(re_ex_block, "$1")
				.replace(re_normalize, " ")
				.replace(re_trim, "$1");
			var e_onkeypress = e.onkeypress.toString()
				.replace(re_ex_block, "$1")
				.replace(re_normalize, " ")
				.replace(re_trim, "$1");
			// check e.onclick == e.onkeypress
			if (e_onclick != e_onkeypress) {
				continue;
			}
			var f = e.onkeypress;
			e.onkeypress = function(evt) {
				var keyCode;
				var target;
				if (evt) {
					keyCode = evt.keyCode;
					if (keyCode == 0)	keyCode = evt.charCode;
					target = evt.target;
				} else {
					keyCode = event.keyCode;
					target = event.srcElement;
				}
				// check keyCode (not a 10, 13 or 32)
				if (keyCode != 10 && keyCode != 13 && keyCode != 32) {
					return true;
				} else {
					if (keyCode == 32) {
						// check target is button
						if (target.nodeName.toLowerCase() != 'input'
						 && target.nodeName.toLowerCase() != 'button'
						) {
							return true;
						}
					}
					// do event_handler
					return f(evt);
				}
			};
		}
	}
};
fn_correctOnKeyPress();

