JQuery вопрос ... способ автоматически отправить форму и перейти к следующему шагу? - PullRequest
1 голос
/ 03 февраля 2010

В принципе, у меня есть процесс, который разбит на 4 формы (таким образом, 4 URL), но я бы хотел полностью обойти третью. Я действительно не могу получить сам код, поскольку он от стороннего поставщика, а не с открытым исходным кодом. Я надеялся использовать jquery для автоматического заполнения и отправки формы, как только пользователь перейдет к третьему шагу, и сделать это так быстро / автоматически, что сама страница практически не видна что выполнимо?

Итак, вот упрощенная разбивка процесса ...

STEP ONE: http://sample.com/step1.aspx

<form name="step1">
<input type="text" name="stepone" value="" />
<input type="submit" name="steponesubmit" value="Submit" />
</form>

STEP TWO: http://sample.com/step2.aspx
<form name="step2">
<input type="text" name="steptwo" value="" />
<input type="submit" name="steptwosubmit" value="Submit" />
</form>


STEP THREE: http://sample.com/step3.aspx
(This is the one I'd like to fill out and submit automatically... 
 Basically, I want to mimic the user having pressed the "Agree" button)
<form name="step3">
<input type="submit" name="stepthreeagree" value="Agree" />
<input type="submit" name="stepthreedisagree" value="Disagree" />
</form>

STEP FOUR: http://sample.com/step4.aspx
<form name="step4">
<input type="text" name="stepfour" value="" />
<input type="submit" name="stepfoursubmit" value="Submit" />
</form>

Ответы [ 3 ]

2 голосов
/ 03 февраля 2010

Вы можете jQuery('input[name=stepthreeagree]').trigger('click'). Если доступна форма DOM.

Или вы можете попробовать разместить / добраться до места с соответствующими данными. * 1004 т.е. *

jQuery.post('blahblah.html',{ stepthreeagree: 'Agree' })

Однако часто эти многошаговые последовательные формы объединяют свои данные (либо через сеансы, либо через скрытые входы), поэтому такое решение может быть недостаточным.

Просто комментарий: это звучит так, будто вы делаете что-то отрывочное. Здесь есть хороший теоретический вопрос, но почему вы пытаетесь обойти чью-то форму соглашения?

Сарфраз: несколько кнопок отправки действительны. Тот, по которому щелкают, тот, чье значение отправлено. Не уверен, если это спецификация, или только для PHP.

0 голосов
/ 03 февраля 2010

Можете ли вы добавить JavaScript на все страницы?

Если это так, в step2.aspx вы можете отменить отправку формы, отправить ее в AJAX, а затем регулярно отправлять третью из (например, добавьте <form> на страницу, отправьте ее с помощью jQuery).

Таким образом step3.aspx даже не будет мерцать.

Даже если есть какая-то защита CSRF, вы можете выполнить поиск поля защиты CSRFиз ответа на представление AJAX.

0 голосов
/ 03 февраля 2010

Прежде всего, не используйте две кнопки отправки для одной формы, например:

Не использовать:

<form name="step3">
  <input type="submit" name="stepthreeagree" value="Agree" />
  <input type="submit" name="stepthreedisagree" value="Disagree" />
</form>

Использование:

<form name="step3" action="http://sample.com/step3.aspx">
  <input type="radio" name="agree" value="agree" checked="checked" />
  <input type="radio" name="agree" value="disagree" />
  <input type="submit" name="stepthreeagree" value="Submit" />
</form>

Теперь, поскольку кнопка «Согласен» уже проверена, вы можете автоматически отправить форму следующим образом:

<script>
window.onload = function()
{
  document.step3.submit();
};
</script>
...