diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java
index 692e4ebd0c..6ee9b45e97 100644
--- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java
+++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java
@@ -279,9 +279,11 @@ ContextMenuListener, IZoomableEditor
     	if (Events.ON_SELECT.equalsIgnoreCase(event.getName()))
     	{
 	        Object newValue = getValue();
-	        ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, newValue);
-	        super.fireValueChange(changeEvent);
-	        oldValue = newValue;
+	        if (isValueChange(newValue)) {
+		        ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, newValue);
+		        super.fireValueChange(changeEvent);
+		        oldValue = newValue;
+	        }
     	}
     	else if (Events.ON_BLUR.equalsIgnoreCase(event.getName()))
     	{
@@ -296,13 +298,19 @@ ContextMenuListener, IZoomableEditor
     			if (item.getLabel().equals(""))
     			{
     				Object newValue = getValue();
-    				ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, newValue);
-    		        super.fireValueChange(changeEvent);
-    		        oldValue = newValue;
+    				if (isValueChange(newValue)) {
+	    				ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, newValue);
+	    		        super.fireValueChange(changeEvent);
+	    		        oldValue = newValue;
+    				}
     			}
     		}
     	}
     }
+
+	private boolean isValueChange(Object newValue) {
+		return (oldValue == null && newValue != null) || (oldValue != null && newValue == null) || (!oldValue.equals(newValue));
+	}
     
     public String[] getEvents()
     {