Как смоделировать действие в форме при отправке? - PullRequest
0 голосов
/ 05 сентября 2010

первый: всегда одно и то же действие.два: форма имеет несколько «CSS SUBMITS», таких как

<form action="/myaction" method="POST">
<a id="foo1" name="foo1" href="#" role="form_button">submit1!</a>
<a id="foo2" name="foo2" href="#" role="form_button">submit2!</a>
<a id="foo3" name="foo3" href="#" role="form_button">submit3!</a>
<input type="submit" id="canfoo" name="canfoo" value="I can process this"/>
</form>
<script>
$('a[role=form_button], div[role=form_button], span[role=form_button]').bind( 'click', function(){ $('form').submit(); } );
</script>

как я могу сделать в / myaction это:

if ($_POST['foo1']) { action; return; } // :(
if ($_POST['foo2']) { action; return; } // :(
if ($_POST['foo3']) { action; return; } // :(
if ($_POST['canfoo']) { action; return; } // THIS WORKKKKKSS!!

Как я могу сделать, чтобы foo1, foo2, foo3 работали?

(я использую jQuery как:

$('a[role=form_button], div[role=form_button], span[role=form_button]').bind( 'click', function(){ $('#actiontodo').val(this.id); $('form').submit(); } );

), затем, на другой стороне (действие),

Я делаю:

IF ($_POST['ACTIONTODO'] == "foo") { action; return; }

НО, ЭТО РЕШЕНИЕ НЕ НРАВИТСЯ!Я ХОЧУ

Ответы [ 3 ]

6 голосов
/ 05 сентября 2010

Вы не должны отдавать предпочтение визуальному, а не удобству использования, это огромная ошибка.В любом случае, вы можете без проблем стилизовать любую кнопку / ввод в соответствии с вашими потребностями, просто возьмите хороший учебник по CSS.

Не изобретайте велосипед.

3 голосов
/ 05 сентября 2010

Вы можете использовать любой элемент для запуска события .submit().

Например, эта форма:

<form id="targetForm" action="/myaction">
   <input type="text" value="Oh hai!"/>
</form>

Может быть отправлено следующим jQuery:

$('#targetForm').submit();

Однако вы можете стилизовать кнопки и поля ввода без особых проблем в CSS.

Обновление:

Я бы согласился с Беном, что вам следует пересмотреть подачу форм таким образом.

Для нескольких отправок триггеров ..

Так что, если у вас есть несколько триггеров, вам нужно скрытое поле для записи этой информации для POST.

Нечто подобное поможет ...

<form id="targetForm" action="/myaction">
   <input type="text" name="myText" value="Oh hai!"/>
   <input type="hidden" name="whichTrigger" value="default" />
</form>

И тогда каждый триггер будет делать ...

$('#whichTrigger').val("myTriggerName"); // A different value for each one of course.
$('#targetForm').submit();
0 голосов
/ 06 сентября 2010

Я решил эту проблему так:

<form action="/myaction" method="POST">
<div id="foo1" name="foo1" href="#" role="form_button"><button type="submit">submit1!</button></div>
<div id="foo2" name="foo2" href="#" role="form_button"><button type="submit">submit2!</button></div>
<div id="foo3" name="foo3" href="#" role="form_button"><button type="submit">submit3!</button></div>
<input type="submit" id="canfoo" name="canfoo" value="I can process this"/>
</form>

!!!!!!!!!!!!!!!!!!!СПАСИБО! * * 1004

...