Проблема при использовании Javascript для перенаправления пользователя при отправке формы - PullRequest
2 голосов
/ 28 июля 2010

У меня есть веб-страница, на которой у меня есть форма.Эта форма содержит кнопку и текстовое поле.Когда кнопка нажата или когда форма отправлена, я хотел бы взять текст из текстового поля и добавить его в URL.Код выглядит следующим образом:

    <form 
 name="askaquestion"  
 id="ask-a-question"  
 onSubmit="window.location.href='http://www.someurl.com/app/' + document.askaquestion.question_ask.value"  
    >  
 <input  
  type="submit"  
  name="submit_question"  
  value="Submit"  
  class="submit"  
  onClick="window.location.href='http://www.someurl.com/app/' + document.askaquestion.question_ask.value"  
 />  
 <input  
  type="text"  
  name="question_ask"  
  value="What's Your Question?"  
  class="inputsmall"  
  id="ask_us_a_question_textbox"  
 />  
    </form>  

Проблема в том, что иногда это работает, а иногда приводит меня к следующему URL:

http://dev/fs?submit_question=Submit&question_ask=help&hiddenInputToUpdateATBuffer_CommonToolkitScripts=1#

Я не уверен, почему это происходит.Форма находится в использовании jquery, чтобы появиться и исчезнуть, это может быть проблемой?Есть ли лучший способ достижения описанного поведения?

Спасибо, Бен

Ответы [ 2 ]

3 голосов
/ 28 июля 2010

Добавить return false; к onSubmit:

onSubmit="window.location.href='http://www.someurl.com/app/' + document.askaquestion.question_ask.value; return false;"

Это останавливает отправку формы (вот почему вы получили http://dev/fs?submit_question... - что означает, что ваша страница называется fs).

0 голосов
/ 28 июля 2010

Когда пользователи нажимают кнопку отправки, после выполнения действия onClick запускается действие «отправить». Чтобы предотвратить действие отправки, вам нужно сделать то, что сказал Герт, вернуть false на <input onClick="return false"> или <form onSubmit="return false">.

Почему бы вам просто не использовать <form action="http://www.someurl.com/app/">, чтобы данные отправлялись на указанный вами URL-адрес?

Если вы действительно хотите, чтобы данные отправлялись в два разных места, вероятно, лучше выполнить второй набор запросов в вашем первом обработчике, то есть, что указывает действие формы.

Некоторые полезные ссылки:
http://www.w3schools.com/tags/tag_form.asp
http://bytes.com/topic/javascript/answers/809181-noobie-onclick-confirm-return-false

...