Thanks Matt. I wasn't ready to give up on the client-side just yet. I thought I could create a condition that would be evaluated as values are manipulated in a particular form field. Here is a snippet of the clientTest portion of my condition (it's property encoded on my def file):
$("input[name='currentEmailAddress']").length > 0 && $("input[name='currentEmailAddress']").getValue() !== $("input[name='emailAddress']").getValue();
I thought this JS snippet would be evaluated before each execution of my custom rule to determine if the rule needs to run. Is that assumption incorrect? It appears so. The remote call runs every time I try to edit an existing email address (regardless as to the value of it or the currentEmailAddress field).
Here are the actual XML nodes...
....
<condition name="isNotCurrentEmailAddress" serverTest="1 eq 1"clientTest="$("input[name='currentEmailAddress']").length > 0 && $("input[name='currentEmailAddress']").getValue() !== $("input[name='emailAddress']").getValue();" />
.....
<property name="emailAddress" desc="Email Address">
<rule type="required" />
<rule type="email" failureMessage="Hey, buddy, you call that an Email Address?" />
<rule type="custom" condition="isNotCurrentEmailAddress" failureMessage="Email address already exists.">
<param name="methodName" value="isUniqueEmailAddress" />
<param name="remoteURL" value="/ColdboxProxy.cfc?method=isUniqueEmailAddress&returnformat=plain" />
</rule>
</property>
....