Я долго программировал проверку StructKeyExists(form,"Update"), пока не изменил свой ввод с type="submit" на type="image". IE не отправляет обратно имя элемента управления, когда type="image", а вместо этого отправляет Update.X и Update.Y.
<form method="post">
Old Way:<br />
<input type="submit" value="3" name="Update" /><br />
<input type="submit" value="4" name="Delete" />
<p>New Way:</p>
<input type="image" value="1" name="Update" src="http://www.google.com/intl/en_ALL/images/logo.gif" /><br />
<input type="image" value="2" name="Delete" src="http://images.google.com/intl/en_ALL/images/logos/images_logo_lg.gif" />
</form>
Моей первой мыслью было, что я должен просто добавить два символа в свою логику.
from: <cfif StructKeyExists(form,"Update")
to: <cfif StructKeyExists(form,"Update.X")
Но мне нужно решение, которое обрабатывает как type="submit", так и type="image". Сейчас моя логика такова:
<cfif StructKeyExists(form,"Update") OR StructKeyExists(form,"Update.X")>
<!--- UPDATE table --->
<cfelseif StructKeyExists(form,"Delete") OR StructKeyExists(form,"Delete.Y")>
<!--- DELETE FROM Table --->
</cfif>
В: Есть ли более элегантный способ проверить, какая кнопка была нажата? Предполагая, конечно, что в форме есть более одной кнопки, потому что, если бы мне нужно было только проверить, была ли форма отправлена, я бы проверил, существуют ли form.fieldnames.