Frage

Ich habe eine Schaltfläche Bild auf einer Seite, die auf Mausklick ausgelöst werden kann, wird standardmäßig auch eine, auf Druck ausgelöst wird, die ich deaktivieren mag.

Ich weiß, über "UseSubmitBehaviour" -Attribut in asp: Button, ist es eine Möglichkeit, das gleiche in asp zu tun: Image

?
War es hilfreich?

Lösung

Ich werde annehmen, dass Sie irgendeine Art von Input-Kontrollen haben und Sie nicht möchten, dass eine Eingabe Tastendruck automatisch einreichen, wenn ein Benutzer Unfall trifft die Enter-Taste. Wenn so Sie einen JavaScript-onkeypress Ereignis an jede Steuer anhängen können, dass Sie dieses Verhalten deaktivieren möchten.

function disableEnterKey(e)
{
     var key;
     if (window.event) key = window.event.keyCode; // Internet Explorer
     else key = e.which;

     return (key != 13);
}

// In your aspx file Page_Load do the following foreach control you want to disable
// the enter key for:
txtYourTextBox.Attributes.Add("OnKeyPress", "return disableEnterKey(event);");

Wenn Sie deaktivieren müssen Sie die Eingabetaste einreichenden Formular vollständig aus. verwendet Fall die OnKeyDown-Handler auf <body> Tag auf Ihrer Seite.

Der JavaScript-Code:

if (window.event.keyCode == 13) 
{
    event.returnValue = false; 
    event.cancel = true;
} 

Mit JQuery dies wäre viel leichter, sauberer und die empfohlene Methode.

: Sie könnten eine Erweiterung mit machen
jQuery.fn.DisableEnterKey =
    function()
    {
        return this.each(function()
        {
            $(this).keydown(function(e)
            {
                var key = e.charCode || e.keyCode || 0;
                // return false for the enter key
                return (key != 13);
            })
        })
    };

// You can then wire it up by just adding this code for each control:
<script type="text/javascript" language="javascript">
    $('#txtYourTextBox').DisableEnterKey();
</script>

Andere Tipps

Wenn Sie Ihre Inhalte in einem setzen asp: Panel können Sie die Default Property eine andere Taste als Standard festlegen, damit Ihr Bild Schaltfläche geklickt werden wont <. / p>

<asp:Panel runat="server" ID="pnl_Test" DefaultButton="btn_Test2">
    <asp:ImageButton runat="server" ID="btn_Test1" />
    <asp:Button runat="server" ID="btn_Test2" />
</asp:Panel>

In diesem Beispiel wird die btn_Test2 wird angeklickt werden, wenn Sie die Eingabetaste drücken, wo normalerweise btn_Test1 wäre klickten

Das Formular wird die erste Schaltfläche findet es auf der Seite ausgeführt werden, wenn Sie die Eingabetaste drücken. Wenn Sie die ImageButton weiter unten auf der Seite bewegen können, so ist es nicht mehr die erste Taste in der Markup und die Verwendung CSS um es richtig zu positionieren, sollte dies Ihr Problem zu beheben. Ich reparierte exakt das gleiche, was letzte Woche und das funktionierte für mich. Ich ging mit dieser Lösung, weil es nicht richtig JavaScript Arbeit erforderte.

Verwenden Kelseys Antwort (Diese Antwort ist wiki'ed)

... aber bitte ein paar Dinge beachten, wenn Sie es implementieren.

  1. würde ich die gute alte JavaScript-Methode empfehlen, wenn Sie nicht bereits jQuery verwenden. (! KeyNum = 13), wenn Sie diese Methode tun, nur Rückkehr nicht tun etwas dumm wie if (true) return true; sonst return false;

  2. Sie müssen nicht onkeydown aus dem Code hinter zuweisen. Das kann im Markup durchgeführt werden und es ist viel sauberer, wenn Sie tun.

  3. Deaktivieren Sie nicht den Schlüssel in Ihrer gesamten Formular ein. Sie können es nur in Ihren Eingaben tun, aber wenn man es in der gesamten Form tut, werden Sie keinen Wagenrücklauf in einem Textfeld hinzufügen können.

  4. Wenn Sie jQuery tun, ich würde empfehlen, eine CSS-Klasse Hinzufügen namens „disableEnterKey“ und Zuweisen es zu einem Formularelemente Sie deaktivieren möchten, dann Kelseys jQuery-Methode auf $ Aufruf ( „disableEnterKey“) in das Dokument bereit.

  5. antworten Sie nicht zu ähnlich jemand auf SO, auch wenn Sie nicht in vollem Umfang mit der Antwort einverstanden. Und selbst wenn die Antwort war einfach und Tausende von Menschen haben wahrscheinlich den Samething getan. Es heißt „Kopieren“. Das ist ähnlich ein „Cutter“ oder eine „tattle Geschichte“ zu sein ... was schlecht ist.

(diese Antwort wurde Gemeinde wiki'ed als diese Frage Thread albern bekommen hat)

Verwenden Sie einen Asp: Bild statt. Dann legen Sie einige Javascript-Code in der Onclick "javascript:document.getElementById('imageClicked').setAttribute('value', 'true'); document.myform.submit();"

Set ein verstecktes Feld Wert (mit Hilfe von JavaScript), um die Server-seitigen Code zu sagen, dass das Bild geklickt wurde.

document.getElementById('imageClicked').setAttribute('value', 'true');

Dann am Ende auf dem Server die Postbacks der Handhabung des Hiddenwert zurückgesetzt werden:

document.getElementById('imageClicked').setAttribute('value', 'true');

Sie wollen so etwas wie

<form ...>

  <!-- some code here -->

  <button style='display:none' onclick='return false'>here comes the magic</button>

  <button>normal button </button>

</form>

Auch die folgenden link.This können für alle Standard-Schaltfläche einreichen Problem gelöst werden. http://weblog.kevinattard.com /2011/08/aspnet-disable-submit-form-on-enter-key.html

Bitte verwenden Sie diesen Code

<script type="text/javascript" language="javascript">
$(document).ready(function {
    $("#<%=imageClicked.ClientID%>").prop('disabled',true)
});
</script>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top