JavaScript для очистки поля формы при отправке перед отправкой формы в Perl Script

У нас есть очень длинная форма с несколькими полями и двумя разными кнопками отправки. Когда пользователь нажимает 1-ю кнопку отправки («Поиск фотографий»), форма должна отправить сообщение, и наш скрипт выполнит поиск соответствующих фотографий на основе того, что пользователь ввел в текстовый ввод («photo_search_text») рядом с 1-й кнопкой отправки и перезагрузите всю форму с соответствующими фотографиями, добавленными в форму. После нажатия второй кнопки отправки («Сохранить изменения») в конце формы она должна отправить сообщение, и наш скрипт должен обновить базу данных информацией, которую пользователь ввел в форму.

К сожалению, макет формы не позволяет разделить ее на 2 отдельные формы. Я проверил всю форму POST, и, к сожалению, отправленные поля идентичны Perl-скрипту, обрабатывающему отправку формы, независимо от того, какая кнопка отправки нажата, поэтому Perl-скрипт не может различать, какое действие выполнять на основе того, какая кнопка отправки нажата. Единственное, о чем я могу думать, это обновить действие onclick второй кнопки отправки, чтобы оно очищало поле «photo_search_text» перед отправкой формы, а затем выполняло поиск фотографий только в том случае, если это поле имеет значение.

Исходя из всего этого, мой вопрос: как выглядит JavaScript, который может очистить поле «photo_search_text», когда кто-то нажимает на вторую кнопку отправки? Вот что я пробовал до сих пор, ни один из которых не работал успешно:

<input type="submit" 
       name="submit" 
       onclick="document.update-form.photo_search_text.value='';" 
       value="Save Changes"
>

<input type="submit" 
       name="submit" 
       onsubmit="document.update-form.photo_search_text.value='';" 
       value="Save Changes"
>

<input type="submit" 
       name="submit" 
       onclick="document.getElementById('photo_search_text')='';" 
       value="Save Changes"
>

Мы также используем JQuery на сайте, поэтому, если есть способ сделать это с помощью jQuery вместо простого JavaScript, не стесняйтесь предоставить пример кода для этого. Наконец, если есть другой способ справиться с этим, о котором я не думаю, все предложения будут приветствоваться.

Заранее спасибо за помощь!


person Russell C.    schedule 30.03.2010    source источник
comment
кнопки отправки имен с разными именами. как submit1, sumbit2, submit3   -  person vittore    schedule 30.03.2010
comment
@vittore - я уже пробовал это, но по какой-то причине CGI.pm не фиксирует эту информацию, поэтому нет возможности проверить ее при обработке формы.   -  person Russell C.    schedule 30.03.2010
comment
чем функция jquery от Ника Крейвера.   -  person vittore    schedule 30.03.2010


Ответы (1)


Если вы дадите вводу идентификатор, подобный этому:

<input ID="nosearch" type="submit" name="submit" value="Save Changes">

Вы можете сделать это с помощью jQuery немного проще, например:

$(function() {
  $("#nosearch").click(function() {
    $("#photo_search_text").val("");
  });
});
person Nick Craver    schedule 30.03.2010
comment
@Nike - как ни странно, это на самом деле не делает то, что было задумано, но то, что он сделал, это заставить модуль Perl CGI.pm захватывать значения имени кнопки отправки. Используя эти значения, мы теперь можем различать submit. Довольно странно, но это работает. Спасибо за вашу помощь! - person Russell C.; 30.03.2010
comment
@Ник, забудь мой последний комментарий. Это была ошибка в том, как perl (читай «я») отображал код JQuery. Как только это было исправлено, ваш код удалил поле photo_search_text до того, как форма была отправлена, что сработало, как мы и надеялись. В очередной раз благодарим за помощь! - person Russell C.; 30.03.2010