WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   ajax jquery ändra text på submit knapp (https://www.wn.se/forum/showthread.php?t=1057916)

Fia 2013-05-14 12:35

ajax jquery ändra text på submit knapp
 
viste inte riktigt om det är rätt forum men en lite riktigt irriterande fråga som jag har slagits med nu i över en timme. Tyckes att det skulle vara lätt men nej. Jag försöker ändra texten på en submit knapp. jag har en massa formulär som har skapats i en loop via jquery och ajax genom att hämta från en db och lägga in via append

$("#diven").append('<div class="rad"><div class="mellan">Ordernr:' + $(this).find("ORDERNR").text() + '</div><form id="spararad" name="spararad" action="" method="post"><input type="hidden" id="ordernr" name="ordernr" value="' + $(this).find("ORDERNR").text() + '"><input type="hidden" id="radnr" name="radnr" value="' + $(this).find("RADNR").text() + '"><input type="submit" id="submit" name="submit" value="spara"></form></div>');

och när man trycker på spara knappen så sparas formulär datan i en db via ajax

$('#spararad').live("submit",function(event){
event.preventDefault();
$.ajax({
url: '/aspararad.php',
type: 'POST',
data: $(this).serialize(),
success: function(data){
if(data="1"){
$(this).find(":submit").live('change', function (e) {
form.find (':submit').val('Ta bort');
});
}else{
$(this).find(":submit").live().val('Spara');
}
}
});
});

Fungera jättebra men jag lyckas inte ändra på texten i knappen efter att datan har sparats. if satser går också igenom utan problem så det är själva raden

$(this).find(":submit").live('change', function (e) {
form.find (':submit').val('Ta bort');
});

Som jag inte får rätt på har provat alla möjliga kombinationer som
$("#submit").val('Spara'); Ändra alla, inte vad jag vill.
$(this).find(":submit").val('Spara');
$(this).find("#submit").val('Spara'); och .html mm

men får det inte att fungera. Någon som har gjort något liknande?

Alex 2013-05-14 12:53

Först och främst;
Raden
Kod:

if(data="1"){
sätter variabeln "data" till 1. Du ska ha två likhetstecken, annars kommer din if-sats alltid att köras med lyckat resultat.

Testa detta.
Kod:

$('#spararad').live("submit",function(event){
    event.preventDefault;
   
    var submitBtn = $(this).find('input[type=submit]');
       
    $.ajax({
        url: '/aspararad.php',
        type: 'POST',
        data: $(this).serialize(),
        success: function(data){
            if(data=="1"){
              submitBtn.val('Ta bort');
            }else{
              submitBtn.val('Spara');
            }
        }
    });
});

Sist skulle jag rekommendera dig att uppgradera till den senaste versionen av jQuery. Det kommer dock bryta MYCKET av din funktionalitet som den ser ut idag. .live() används inte längre, och kommer att tas bort helt ur framtida versioner - om den ens finns kvar idag.

Fia 2013-05-14 13:12

tackar för hjälpen

Fia 2013-05-15 09:25

Du som verkar ha koll på det här finns det ett sätt att submita formen vid klick på parent div. typ

$(".rad").live("click", function () {
$(this).toggleClass("radvald")
//alert($(this).children('form').eq(0));
$(this).children('form').eq(0).live("submit");
});

Detta fungera inte.... men det är ovan form som jag vill skicka. Och eftersom jag inte har några specifika id till formen har jag lite problem att komma till den.

Vet du hor man gör det också? Jag jobbar hårt på att få bättre koll på jquery men där är många bud där ute när man surfar runt för svar och har provat som det känns 100st börjar man bli lite trött i huvudet.


Alla tider är GMT +2. Klockan är nu 00:47.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson