Установка значения отправки в jQuery submit - PullRequest
16 голосов
/ 20 августа 2010

Я хочу использовать jQuery для отправки моей формы, и я могу сделать это так

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

и это все хорошо, но обычно кто-то нажимает кнопку отправки, чем эта кнопка отправки имеет значение, поэтому, когда я делаю отправку через jQuery, мне также нужно установить значение отправки, как мне это сделать?

EDIT

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

в конечном итоге отправить с помощью формы Ajax

** Уточнение **

хорошо, поэтому у меня есть настройка jQuery для использования jquery validate и такой обработчик отправки, как у

$("#myform_id").validate({
    submitHandler: function() {
        run_ajax(obj);
    }
});

тогда это вызывает функцию I, я вызываю run_ajax, передавая объект, содержащий информацию о том, какой тип ajax я хочу и что у вас.

и в конечном итоге запускает это

obj.formitem.ajaxSubmit({
    dataType:'json',
    data: obj.pdata,
});

, где

  obj.formitem == $('#myform_id');

поэтому, когда форма отправляется, все, что происходит, все хорошо.

поэтому я загружаю страницу с этой формой в диалоговое окно jquery и хочу, чтобы они могли нажимать кнопку в диалоговом окне, которая вызывает отправку формы, а также сообщает форме, какой тип отправки был запрошен

надеюсь, теперь все ясно, извините за путаницу

Ответы [ 7 ]

17 голосов
/ 22 апреля 2012

https://stackoverflow.com/a/993897/215887 работал для меня

Ну, на самом деле я сделал это так:

$('<input />').attr('type', 'hidden')
              .attr('name', 'myButton')
              .attr('value', 'MyButton')
              .appendTo('#my-form');
$('#my-form').submit();
14 голосов
/ 20 августа 2010

Один быстрый способ будет $('#myform_id #submitButtonID').click();

3 голосов
/ 20 августа 2010

.submit() даст вам традиционную отправку, которая происходит POST / GET с обновлением страницы.

Для ajax вам нужно будет использовать либо $ .post, $ .get или $ .ajax -Например:

var aaa = $("#your_form").serialize();
$.post("your_url",aaa,function(response){/*do something*/},"json");

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

$(".submit_buttons").click(function(){

$("#my_hidden_input").val($(this).attr("rel"));

/* 
above serialize and ajax post code
*/

});

HTML:

<input type="button" class="submit_buttons" rel="special_button1" value="Button 1"/>
<input type="hidden" id="my_hidden_input" />

Когда я использую этот плагин проверки, этокак мне это сделать.

$("#right_form").validate(); //To add validation to the form

validate9 = $("#right_form").validate().form(); //Check if the form validates 

Затем с помощью if проверьте, что validate9 равен true, и отправьте с помощью $.post().

Обычный ajax довольно прост.

Несколько причин, по которым я думаю, что вы, вероятно, используете iframe для отправки формы: 1 ) Это должно быть сделано таким образом (какое-то неизменное требование). 2 ) Вы хотите загрузить некоторые файлы, используя ajax.

Ref: Ограничения iframe JS.

Не уверен, поможет ли это, но, если вы поймете это, пожалуйста, напишите ответ, чтобы сообщить нам, как вы позаботились об этом.

2 голосов
/ 02 октября 2011
   $('#myform').submit(function(event){
      /* stop form from submitting normally */
      event.preventDefault();

      // get form data and include value from submit button
      var post_data = form.serializeArray();
      post_data.push({name: event.originalEvent.explicitOriginalTarget.name,
                      value: event.originalEvent.explicitOriginalTarget.value
                     });

      // ...
   }
1 голос
/ 20 августа 2010

Значение отправки просто передается в качестве параметра.Так что если у вас есть:

<input type="submit" name="mysubmit" value="click"/>

, тогда запрос будет содержать параметр запроса mysubmit = click.

Так что просто добавьте скрытый тип ввода, например:

<input type="hidden" name="mysubmit" value="click"/>
0 голосов
/ 20 августа 2010

Это должно сработать:

$('#form_id #submitbutton_id').val('your value');
0 голосов
/ 20 августа 2010

Вы можете добавить кнопку Submit к вашей форме и эмулировать нажатие на кнопку.Разве это не решает твою цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...