2013-09-27 6 views
1

У меня есть две кнопки отправки, созданные для отправки формы. Я хотел бы знать, какая кнопка отправки была нажата без применения события .click() для каждого из них. Еще одна вещь, которую я использую ASP.NET MVC 3 и хочу получить имя кнопки клика в контроллере.Как проверить, какая кнопка отправки нажата?

Вот установка:

<a class="anchorbutton"> 
    <input type="submit" value="Save" id="Save" class="hrbutton"/> 
</a> 
<input type="submit" value="Save & Next" id="SaveNext" class="hrbutton anchorbutton"/>   


$('#form').live('submit', function (e)  
{  
    e.preventDefault(); 
    var form = $('#form');  
    $.ajax({ 
     cache: false, 
     async: true, 
     type: "POST", 
     url: form.attr('action'), 
     data: form.serialize(), 
     success: function (data) { 
      $.ajax({ 
       url: 'url', 
       dataType: "html", 
       success: function (data) { 
        $("#div").html(data);      

       } 
      }); 
     } 
    }); 
    return false; 
}); 


[HttpPost] 
public JsonResult Post(FormCollection form, string submitButton) 
{   

} 
+0

который JQuery версия, которую вы используете – Rafay

+0

я использую Jquery 1.5. 1 – enigma

ответ

1

также попробовать связывании щелчок обработчик события кнопки Сохранить и SaveAndNext как

$(document).delegate("#Save,#SaveAndNext","click",function(e){ 
console.log($(this).attr("id"));//here you will know which button was pressed 
//next you can check if the form is valid or not 
if($(this).closest('form').valid()){ 
//form is valid submit it ajax(ily) 

}else{ 
//form is not valid 
} 
}); 

вы также можете кэшировать Селектор

var $this = $(this); 
0

Попробуйте

ButtonClick Event " OnClick="MyButton_Click" " 
+0

спасибо за ответ. я упоминаю в вопросе, я не хочу использовать событие click. – enigma

2

Дайте ваши кнопки имена:

<a class="anchorbutton"> 
    <button type="submit" name="save" id="Save" class="hrbutton">Save</button> 
</a> 
<button type="submit" name="savenext" id="SaveNext" class="hrbutton anchorbutton">Save & Next</button> 

, а затем ваше действие контроллера может принять эти параметры с тем же именем и проверки если оно имеет значение:

[HttpPost] 
public ActionResult Post(string save, string saveNext, FormCollection form) 
{ 
    if (!string.IsNullOrEmpty(save)) 
    { 
     // The Save button was clicked 
    } 
    else if (!string.IsNullOrEmpty(saveNext)) 
    { 
     // The Save & Next button was clicked 
    } 
    else 
    { 
     // None of the submit buttons were used or clicked to submit the form. 
     // The user simply pressed the Enter key while the focus was inside 
     // some of the input fields of the form 
    } 

    ... 
} 

О, и, кстати, функция jQuery устарела. Вместо этого используйте .on.

+0

$ ("# form"). Submit (функция (событие) {}); Я получил имя кнопки в контроллере, но проверка не работает. – enigma

Смежные вопросы