2017-03-28 4 views
-2

Ich möchte meine ASP.NET-Seite laden, Benutzereingaben erhalten und darauf basierend einige Aktionen ausführen. Problem ist, ich möchte nicht den Benutzer sehen lassen, was er/sie tippt und die Eingabe selbst sollte nicht sichtbar sein. Auch ich möchte Postback verarbeiten, wenn die Länge einer Eingabe der Länge 6 ist.Eingabefeld, das für Benutzer nicht sichtbar ist

Am nächsten komme ich zu einem Textfeld mit Hintergrundfarbe: transparent und ohne Rahmen. Auch Autopostback ist aktiviert. Textfeld erhält den Fokus, wenn der Benutzer die Eingabetaste drückt, das Postback wird aufgerufen, die Textlänge wird überprüft und dann mache ich ein paar Sachen im Code hinterher. Leider kann der Benutzer den Text sehen, wie er/sie tippt und die Eingabe muss gedrückt werden.

Irgendwelche Ideen wie kann ich das erreichen?

// Für alle, die sich fragen, warum will ich dies tun:

Seite geladen wird, der Benutzer sieht die leere Seite. Sie/er legte seine RFID-Karte auf RFID-Leser. Der Leser sendet Eingabe + Eingabe (sollte leicht auf dem Leser selbst einzurichten sein) auf die Seite. Postback erscheint, Länge wird überprüft, einige Informationen werden auf Seite geschrieben. Ich möchte nicht, dass Benutzer vor dem Postback etwas sehen (vor allem Text aus dem Textfeld). Jetzt habe ich nicht den Leser und die Art, wie Eingang zu verbergen, aber ich muss es testen. Wenn ich herausfinden könnte, wie man Postback ohne Senden tut, wäre es noch besser.

+0

Verwenden Sie ein '' und ändern Sie den Wert mit JavaScript? –

+2

Können Sie eine Textbox im Passwort-Stil verwenden? –

+1

Ich bekomme Sie wollen nicht, dass Benutzer sehen, "was" sie tippen. Kann ich fragen, warum in aller Welt wollen Sie nicht, dass ein Benutzer "das" sieht, das er schreibt? –

Antwort

0

In ASP.NET gibt es eine 'sichtbare' Eigenschaft, aber das kann die Eingabe deaktivieren. Vielleicht könntest du es versuchen.

Sie könnten auch die Textfarbe auf die gleiche Hintergrundfarbe einstellen (transparent) - auch einen Versuch wert.

Ich würde das HTML5-Passwort-Attribut auf das Eingabefeld setzen. Der Benutzer könnte dann die Eingabe sehen, aber nicht die Zeichen, die sie eingegeben haben.

+1

'visible' ist eine serverseitige Eigenschaft, das Element wird nicht auf der Seite gerendert, wenn Sie' visible = "false" 'mit einem' runat = "server" '-Tag verwenden. – Santi

0

So bin ich nicht ganz klar, was genau wollen Sie, aber zu meinem besten Verständnis, hier eine Lösung:

ein Textfeld erstellen, die unsichtbar ist mit CSS. Fügen Sie auf der Schaltfläche zum Senden eine JS/jQuery-Funktion hinzu, die prüft, ob die Eingabe sechs Zeichen lang ist, und das Postback nur ausführt, wenn dies der Fall ist - alles andere und die Funktion gibt false zurück und die Seite wird nicht zurückgeschrieben.

Haben Sie daran gedacht?


ASP.Net

<asp:Textbox runat="server" cssclass="invis"></asp:Textbox> 
<asp:Button runat="server" Text="Submit" onClientClick="return checkSixChars();"></asp:Button> 

CSS

.invis { 
    border: 0px; 
    color: transparent; 
    background: none; 
    outline: 0; 
} 

jQuery

function checkSixChars() { 
    var $input = $(".invis").first(); 
    if ($input.val().length == 6) { 
     return true; 
    } 

    return false; 
} 
+0

ist das nicht, was das OP schon hat? Geben Sie auch "Hallo" und dann Strg-A ein und Sie können sehen, was Sie eingegeben haben. –

+0

Wenn der Benutzer sehen möchte, was sie eingegeben haben, kann das einfach zu "Inspect Element" gehen und es gibt die gesamte Seite, versteckte Felder und alle. Ich hatte angenommen, dass niemand, der bei klarem Verstand war, denken würde, dass das Verstecken einer Textbox oder die Verwendung von Hiddenfields einem * Sicherheits * -Zweck dienen würde, nur einer stilistischen. – Santi

0

versuchen Sie wie folgt vor:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    <script> 
 
     jQuery(function(){ 
 
     $("#teste").keypress(function(event){ 
 
      //console.clear(); 
 
      //console.log(event);  
 
      $(this).val(""); 
 
      $("#testeHidden").val($("#testeHidden").val() + event.key); 
 
      var value = $("#testeHidden").val(); 
 
      if(value.length < 6) 
 
      return false; 
 
      $("#secretButton").click();   
 
      return false;  
 
     }); 
 
     $("#viewer").click(function(){ 
 
      alert($("#testeHidden").val()); 
 
     }); 
 
     $("#secretButton").click(function(){ 
 
      console.log("I will post to the server the following value:"); 
 
      console.log($("#testeHidden").val()); 
 
      $("#testeHidden").val(""); 
 
     }); 
 
     }); 
 
    </script> 
 
    <input type="text" id="teste" /> 
 
    <input type="hidden" id="testeHidden" /> 
 
    <input type="button" value="show" id="viewer" /> 
 
    <input type="button" value="show" style="display:none" id="secretButton" />

Ich hoffe, dass es Ihnen helfen kann.

+0

Das sieht solide aus. Ich werde es versuchen. Vielen Dank. – Bendom

Verwandte Themen