Ich verwende das jQuery UI-Dialogfeld für die Übermittlung von AJAX-Formularen. Ich möchte den Text meiner Schaltfläche speichern, um zu warten, wenn Benutzer darauf klicken und zurück zu speichern, wenn Ajax-Aufruf abgeschlossen. pls hilfe michDialogfeld "jQuery UI dynamisch ändern" Schaltfläche Text
Antwort
Verwenden Sie $().text('Please Wait')
bevor Sie den AJAX-Anruf und dann $().text('Save')
als die letzte Operation in den Erfolg Rückruf hinzufügen.
Hinweis dafür, dass Sie ein button
Element verwenden müssen, nicht ein input
Element:
<button>Text here</button>
Ich benutze jQuery UI Dialog Buttons. So wollen Sie den Text dieser Schaltfläche ändern – saokat
Und Ihr Problem ist? –
Das Problem ist, dass jQuery-Dialogfelder keine ID haben –
Sie müssen entsprechend beforeSend
und complete
Optionen verwenden. Schauen Sie sich die Dokumentation für weitere Informationen:
Vorausgesetzt, Sie verwenden .dialog() mit der Tasten-Option können Sie eine benutzerdefinierte Klasse mit dem Submit-Button zuweisen, und Ziel dann die innere Taste Text über die Klasse, auf die Spanne (ui-button-Text) zugeordnet:
$("#dialog-test").dialog({
title: "My dialog",
buttons:
[
{
text: "Submit",
click: function() {
$(".my-custom-button-class > .ui-button-text").text("Please Wait...");
$("#some-form").submit();
},
'class': 'my-custom-button-class'
}
]
});
Wenn Ihre speichern vervollständigt über die submit(), können Sie den gleichen Anruf, um den Text zurück zu setzen, was Sie wollen.
$(".ui-dialog-buttonpane button:contains('Save') span").text("Please wait...");
Wenn es jemand hilft: vollständige Umsetzung mit Beispiel (PS: Ich lieh getDialogButton() von einem anderen Beitrag auf dieser Seite aber kann mich nicht erinnern Link).
//-> Change to Loading Notice:
setButton('.settingsDialog', 'Save', 'Saving...', false);
setTimeout(function() { setButton('.settingsDialog', 'Saving...', 'Save', true); }, 800);},
//Select the Dialog Buttons
function getDialogButton(dialog_selector, button_name) {
var buttons = $(dialog_selector + ' .ui-dialog-buttonpane button');
for (var i = 0; i < buttons.length; ++i) {
var jButton = $(buttons[i]);
if (jButton.text() == button_name)
{
return jButton;
}
}
return null;
}
//Button Controller for AJAX Loading:
function setButton(sDialogClass, sButtonName, sNewButtonName, bEnabled){
var btn = getDialogButton(sDialogClass, sButtonName);
btn.find('.ui-button-text').html(sNewButtonName);
if (bEnabled) {
btn.removeAttr('disabled', 'true');
btn.removeClass('ui-state-disabled');
} else {
btn.attr('disabled', 'true');
btn.addClass('ui-state-disabled');
}
}
Dieses Bit: btn.find ('. Ui-button-text') .html (sNewButtonName) hat meinen Speck gespeichert. Aber um die Schaltfläche zu erhalten, fand ich es einfacher, die ID der Schaltfläche mit einem Selektor zu erhalten (Sie können ID: "myButtonID" in dem Array setzen, wo Sie die Schaltflächen setzen, dann verwenden Sie einen normalen Selektor $ ("# myButtonId"). find ('. ui-button-text'). html ("neuer Text") – Gurnard
Perfekt genau das, was ich gesucht habe. Sollte in jQueryUI-Dialog eingebaut werden. – dualmon
$("#dialog-test").dialog({
title: "My dialog",
buttons:
[
{
text: "Submit",
click: function() {
$(".my-custom-button-class > .ui-button-text").text("Please Wait...");
//You may use $(this) as selector or allso $("#dialog-test")
$(this).parent().children('.ui-dialog-buttonpane').children().children().html('Please wait..');
//As you have only one button, it should not matter to specify child element, but you can like this:
//$($(this).parent().children('.ui-dialog-buttonpane').children().children()[0]).html('Please wait..');
$("#some-form").submit();
},
'class': 'my-custom-button-class'
}
]
});
Obwohl die Frage ist sehr alt ich die Antwort zu finden ist sehr einfach zu sein und es hier nicht gegeben.
- Sie können eine ID für die Schaltfläche festlegen und verwenden.
- Alle Dialogfelder sind jQuery UI-Schaltflächen, daher können Sie die Schaltfläche
$().button()
verwenden, um die Schaltfläche zu ändern.
Der JavaScript-Code ist:
$('#dialog').dialog({
buttons:[{
id: 'buttonId',
click: function() {
// your function
}]
});
$('#buttonId').button('option', 'label', 'Please wait...');
[Siehe auch diese Antwort] (http: // stackoverflow. com/questions/10312835/set-jquery-ui-dialog-knopf-id # 10312946) für einfachere (Nicht-Array-) Syntax. Funktioniert gut in Verbindung mit dieser Antwort. – gibberish
Note the correct way mehr Tasten on the fly zu erstellen:
'buttons', [
{
text: "Download",
click: function() {...}
},
{
text: "Not now",
click: function() {...}
}
]
Hier ist ein Beispiel für den Nicht-Array-Stil mit: See this jsFiddle für ein Beispiel .
Für meine Version von jQuery UI (1.11.4), arbeitete dieses Format auf den Button Text zu ändern:
$('#setActionButton').button('option').text('new text');
es jedoch hat, nicht die Schaltfläche mit dem neuen Text in das Dialog zurückgesetzt! Das war frustrierend. JaredBroad 's obige Antwort ist diejenige, die für mich funktionierte, indem zuerst alle Knöpfe aus dem Dialog gezogen wurden und dann durchgeschliffen wurde, um die Schaltfläche zum Umbenennen zu finden. Dann änderte es jedes Mal den Text.
Ich finde, dass wenn ich viele Dialoge mit den gleichen Tasten verwende, dann kann ich Klasse zu jeder Schaltfläche in jedem Dialogfeld definieren und dann den Text auf allen Schaltflächen ändern.
$('#dialog1').dialog({
buttons:[{
class: "btnOK",
click: function() {
...
}
},
{
class: "btnClose",
click: function() {
...
}
}]
});
$('#dialog2').dialog({
buttons:[...]
});
$('.btnOK').button('option', 'label', 'Your text here');
$('.btnClose').button('option', 'label', 'Your text here');
auch statt Klasse Sie id für jede Taste definieren können (jedoch id sollte eindeutig sein)
- 1. Leere Schaltfläche in Jquery UI Dialogfeld
- 2. Hinzufügen einer Schaltfläche zu einem Dialogfeld dynamisch
- 3. jquery ui Dialogfeld als bestätigen
- 4. Text dynamisch ändern
- 5. jQuery Ui Dialogfeld wird nicht angezeigt
- 6. Ein jQuery-UI-Akkordeon in ein jQuery-UI-Dialogfeld einfügen
- 7. Ändern der jQuery-UI-Schaltflächengröße?
- 8. Ändern der Größe eines Jquery UI-Dialogfelds dynamisch
- 9. Schaltfläche Ändern Funktionalität jQuery
- 10. Validierung für JQuery-UI Popups im Dialogfeld
- 11. Dialogfeld "JQuery UI Dialog" ('close'); funktioniert nicht
- 12. Einfacher Ersatz für das Dialogfeld jQuery UI?
- 13. jquerymobile dynamisch ändern von Text für die Schaltfläche Problem
- 14. Wie zu ändern MessageDialog Schaltfläche Text
- 15. Material-UI Dialogfeld Stil Aktionstaste
- 16. Wie können geänderte Schaltflächen im jQuery UI-Dialogfeld aktualisiert werden?
- 17. Android Benachrichtigung Text dynamisch ändern
- 18. Jquery UI Dialog blockiert Eingabe von Text in Textfeld
- 19. Dynamisch ändern aktiven Registerkarte Index jQuery UI Registerkarten
- 20. Entfernen Titelleiste ohne die Kreuz-Schaltfläche von jQuery Dialogfeld
- 21. Hinzufügen Jquery UI Button dynamisch
- 22. Jquery ui Datepicker maxDate dynamisch
- 23. Die beste Methode zum Entfernen der Schließen-Schaltfläche im jQuery UI-Dialogfeld-Widget?
- 24. jQuery dynamisch Elementhöhe ändern
- 25. aktivierende benutzerdefinierte Klasse Schaltfläche dynamisch
- 26. JQuery Dialogfeld Double Posting
- 27. jQuery UI droppable auf dynamisch hinzugefügtem Element?
- 28. das nächste Element der angeklickten Schaltfläche in jQuery UI Dialogfeld Senden
- 29. jQuery UI: Schaltfläche öffnet Dialog/Schaltfläche ändert nicht den Status
- 30. Mit Javascript/Jquery Text in div auf Schaltfläche ändern klicken
Wenn ich die beste Antwort auf diese Frage entscheiden könnte, wäre es [das sein eine von ManojRK] (http://stackoverflow.com/questions/4591642/dynamically-changing-jquery-ui-dialog-box-button-text#15863018). Gut gemacht, Manoj. – gibberish