[JS] Return van onclick functie naar aanroepende functie?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 14-09 14:01
In ASP.NET heb ik een GridView waarin een knopje zit om een record te verwijderen, voordat een record verwijderd wordt vraag ik in een zelf gebouwde overlay functie of dit akkoord is ja of nee:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
 <asp:GridView ID="abonnee_lijst" Visible="false" PagerStyle-CssClass="pager" runat="server" DataSourceID="abonneeDataSource" DataKeyNames="nwsbr_abo_uid" AllowPaging="true" PageSize="2" AutoGenerateColumns="false" CssClass="abonnee_lijst" GridLines="None" style="margin-top: 15px; clear: left;">
    <Columns>
        [...]
        <asp:TemplateField ShowHeader="false">
         <ItemTemplate>
           <asp:LinkButton ID="delete2" CommandName="Delete" Text="delete2"
OnClientClick="return showJQOverlayGridView('confirm', '<h2>Blok verwijderen</h2>Weet u zeker dat u dit blok wilt verwijderen?', 'Ja', '', 'Nee', '');"
runat="server"></asp:LinkButton>
         </ItemTemplate>
        </asp:TemplateField>
    </Columns>    
 </asp:GridView>


Deze functie moet dus een return true of false terug geven om het record wel of niet te verwijderen. In de showJQOverlayGridView functie maak ik echter een overlay met daarin 2 knoppen, een Ja om te verwijderen en Nee om niet te verwijderen.
Een stukje van de JS functie:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function showJQOverlayGridView() {
 [...]
 button_container = $("<div></div>").addClass("button_container");
 jq_overlay_container.append(button_container);
 button_confirm = $("<input />");
 button_confirm.attr({ type: "button", value: confirm_button_text });
 button_confirm.bind("click", function() { return true; } );
 button_container.append(button_confirm);
 button_deny = $("<input />");
 button_deny.attr({ type: "button", value: cancel_button_text });
 button_deny.bind("click", function() { closeJQOverlay(); });
 button_container.append(button_deny);
 [...]
 return false;
}

Die JA knop moet dus aan de bovenliggende functie een return true teruggeven, maar dit lukt op geen enkele manier en vraag me wel af of dit uberhaupt wel kan.. :? :?

Hoe kan ik dit dus werkend krijgen of moet ik dit laten varen en aan een andere oplossing denken?

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Wil je per se zo'n eigen overlay tonen en niet gewoon de standaard confirm gebruiken? Want dat laatste maakt het veel makkelijker.

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 14-09 14:01
HuHu schreef op woensdag 14 oktober 2009 @ 19:27:
Wil je per se zo'n eigen overlay tonen en niet gewoon de standaard confirm gebruiken? Want dat laatste maakt het veel makkelijker.
Ik weet dat een standaard confirm het makkelijker maakt, maar ik zou graag toch een eigen overlay willen tonen.
Blij in ieder geval dat je begrijpt wat ik bedoel :)

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Dat gaat je niet lukken zonder de boel uit elkaar te trekken. Een zelfgemaakte "confirm" blijft niet wachten op invoer van de gebruiker. Je krijgt dus één functie die de overlay toont en een andere functie die wordt aangeroepen als de gebruiker wat doet en de keuze moet afhandelen.

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 14-09 14:01
HuHu schreef op woensdag 14 oktober 2009 @ 20:52:
Dat gaat je niet lukken zonder de boel uit elkaar te trekken. Een zelfgemaakte "confirm" blijft niet wachten op invoer van de gebruiker. Je krijgt dus één functie die de overlay toont en een andere functie die wordt aangeroepen als de gebruiker wat doet en de keuze moet afhandelen.
Daar was ik ook al bang voor, maar ik dacht dat er misschien een methode was waarvan ik het bestaan niet wist ;)
Bedantk voor je advies in ieder geval

Acties:
  • 0 Henk 'm!

  • Tjoekbezoer
  • Registratie: Maart 2003
  • Laatst online: 18-11-2024
Even snel wat in elkaar gezet hoor, maar misschien iets in de lijn van dit? Dit is overigens geen werkende code:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<input type="submit" onclick="myConfirm( function() { deleteItem( 130 ) } )"/>

<script type="text/javascript" charset="utf-8">
    function myConfirm( onOK )
    {
        // Teken een overlay met een custom confirm
        drawButton( 'ok', onOK );
        drawButton( 'cancel', function(  )
        {
            // Cancel; doe niks
        } );
    }
    
    function deleteItem( id )
    {
        // delete item
    }
    
    function drawButton( text, callback )
    {
        // Teken button met text, en roep callback bij een onclick oid
        var button = document.createElement( 'button' );
        button.onclick = callback;
        button.innerHTML = text;
        
        document.appendChild( button );
    }
</script>

Acties:
  • 0 Henk 'm!

  • Urk
  • Registratie: Maart 2000
  • Laatst online: 14-09 14:01
Tjoekbezoer schreef op woensdag 14 oktober 2009 @ 22:50:
Even snel wat in elkaar gezet hoor, maar misschien iets in de lijn van dit? Dit is overigens geen werkende code:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<input type="submit" onclick="myConfirm( function() { deleteItem( 130 ) } )"/>

<script type="text/javascript" charset="utf-8">
    function myConfirm( onOK )
    {
        // Teken een overlay met een custom confirm
        drawButton( 'ok', onOK );
        drawButton( 'cancel', function(  )
        {
            // Cancel; doe niks
        } );
    }
    
    function deleteItem( id )
    {
        // delete item
    }
    
    function drawButton( text, callback )
    {
        // Teken button met text, en roep callback bij een onclick oid
        var button = document.createElement( 'button' );
        button.onclick = callback;
        button.innerHTML = text;
        
        document.appendChild( button );
    }
</script>
De onclick functie zit op een <a /> tag waarvan de href niet standaard moet worden uitgevoerd, dit kun je dus bereiken met een return false. Echter van de 2 knoppen is er 1 die een return true weer terug zou moeten geven aan de parent functie waardoor de HREF alsnog wordt uitgevoerd. Volgens mij kan dit dus niet. Bedankt voor je voorzet maar er zitten geen returns in, ook werkt jouw voorbeeld volgens mij niet in dit geval

Acties:
  • 0 Henk 'm!

  • Tjoekbezoer
  • Registratie: Maart 2003
  • Laatst online: 18-11-2024
Die href zou je toch ook in javascript kunnen uitvoeren? Dus ipv van dat je terugvalt op standaard gedrag van HTML/Javascript, neem je een window.location.href in je 'OK' bevestiging op en laat je de href van de <A> tag voor wat het is.

HTML:
1
<input type="submit" onclick="myConfirm( function() { deleteItem( 130 ); window.location.href='next.html'; } )"/>


Of je zet hem in de deleteItem functie natuurlijk, of waar dan ook.
Pagina: 1