2014-12-04 4 views
0

У меня есть несколько форм на мобильной странице jQuery, которые используют один и тот же процессор php. Я смог понять, как получить jQuery для отправки только формы, содержащей кнопку отправки, которую пользователь нажал, но я не могу понять, как изменить значение кнопки, которую пользователь нажал.jQuery Мобильный идентификатор нажал кнопку в форме и изменил значение

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

Пока что нижеприведенный сценарий изменит текст всех кнопок отправки, а не только тот, который нажал пользователь.

Мой JQuery:

$("form input[type=submit]").on("click", function(e){ 
    $.post('doStuff.php', $(this).closest("form").serialize(), function(data) { 
     //changes the value of all submit buttons  
     $('input[type=submit]').val('Thank You').button("refresh");  

     //the rest of these do not work at all  
     $('input[type=submit]', $(this).closest('form')).val('Thank You').button("refresh"); 
     $('input[type=submit]', $(this)).val('Thank You').button("refresh"); 
     $('input[type=submit]', $(this).parent('form')).val('Thank You').button("refresh");  
    }).error(function(){ 
     alert("Error submiting the form"); 
    }); 
}); 

Мой HTML:

<form action="doStuff.php" method="post" data-ajax='false'> 
    <input type="submit" name="submit" value="stuff" id="btnSubmit"> 
</form> 
<form action="doStuff.php" method="post" data-ajax='false'> 
    <input type="submit" name="submit" value="more stuff" id="btnSubmit"> 
</form> 
<form action="doStuff.php" method="post" data-ajax='false'> 
    <input type="submit" name="submit" value="a ton of stuff" id="btnSubmit"> 
</form> 

Кто-нибудь есть идеи, как сделать то, что я ищу делать?

+0

'var $ self = $ (this);' поверх обработчика кликов, а затем использовать $ self внутри '$ .post()' success callback. Отладка показала бы вам, откуда ваша проблема –

ответ

1

Сделайте это в ином случае, послушайте submit мероприятие, разместите его и измените текст кнопки в этой форме.

$("form").on("submit", function() { 
    $(this).find("[type=submit]").val("Thank you").button("refresh"); 
}); 
0

omar ваш ответ был в основном правильный .... спасибо! Перед публикацией формы мне пришлось присваивать переменную $ (this) переменной. Ниже приведен рабочий код.

$("form input[type=submit]").on("click", function(e){ 
    e.preventDefault(); 
    $this = $(this); 
    $.post('doStuff.php', $(this).closest("form").serialize(), function(data) { 
     $this.find("[type=submit]").val("Thank you").button("refresh");  
    }).error(function(){ 
     alert("Error submiting the form"); 
    }); 
});