javascript desactivar - Desactivando la tecla enter para el formulario




html con (9)

Solo agregue el siguiente código en la etiqueta <Head> en su código HTML. Se enviará el formulario en la tecla Intro para todos los campos del formulario.

<script type="text/javascript">
    function stopEnterKey(evt) {
        var evt = (evt) ? evt : ((event) ? event : null);
        var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if ((evt.keyCode == 13) && (node.type == "text")) { return false; }
    }
    document.onkeypress = stopEnterKey;
</script>

He estado intentando desactivar la tecla Intro en mi formulario. El código que tengo se muestra a continuación. Por alguna razón, la tecla Intro todavía está activando el envío. El código está en mi sección principal y parece ser correcto de otras fuentes.

disableEnterKey: function disableEnterKey(e){
        var key;      
        if(window.event)
            key = window.event.keyCode; //IE
        else
            key = e.which; //firefox      

        return (key != 13);
    },

Revisé todas las soluciones anteriores, no funcionan. La única solución posible es capturar el evento 'onkeydown' para cada entrada del formulario. Debe adjuntar disableAllInputs para cargar la página o mediante jquery ready ()

/*
 * Prevents default behavior of pushing enter button. This method doesn't work,
 * if bind it to the 'onkeydown' of the document|form, or to the 'onkeypress' of
 * the input. So method should be attached directly to the input 'onkeydown'
 */
function preventEnterKey(e) {
    // W3C (Chrome|FF) || IE
    e = e || window.event;
    var keycode = e.which || e.keyCode;
    if (keycode == 13) { // Key code of enter button
        // Cancel default action
        if (e.preventDefault) { // W3C
            e.preventDefault();
        } else { // IE
            e.returnValue = false;
        }
        // Cancel visible action
        if (e.stopPropagation) { // W3C
            e.stopPropagation();
        } else { // IE
            e.cancelBubble = true;
        }
        // We don't need anything else
        return false;
    }
}
/* Disable enter key for all inputs of the document */
function disableAllInputs() {
    try {
        var els = document.getElementsByTagName('input');
        if (els) {
            for ( var i = 0; i < els.length; i++) {
                els[i].onkeydown = preventEnterKey;
            }
        }
    } catch (e) {
    }
}

En la etiqueta de su formulario simplemente pegue esto:

onkeypress="return event.keyCode != 13;"

La mayoría de las respuestas están en jQuery. Puede hacerlo perfectamente en Javascript puro, simple y sin necesidad de biblioteca. Aquí está:

<script type="text/javascript">
window.addEventListener('keydown',function(e){if(e.keyIdentifier=='U+000A'||e.keyIdentifier=='Enter'||e.keyCode==13){if(e.target.nodeName=='INPUT'&&e.target.type=='text'){e.preventDefault();return false;}}},true);
</script>

Este código funciona muy bien porque, solo deshabilita la acción de pulsación de tecla "Enter" para el tipo de entrada = 'texto'. Esto significa que los visitantes todavía pueden usar la tecla "Enter" en textarea y en toda la página web. Todavía podrán enviar el formulario, yendo al botón "Enviar" con las teclas "Tabulador" y presionando "Enter".

Aquí hay algunos puntos destacados:

  1. Está en javascript puro (no se requiere biblioteca).
  2. No solo verifica la tecla presionada, sino que también confirma si se presiona "Enter" en el elemento de formulario de tipo de entrada = 'texto'. (Lo que hace que las formas más defectuosas envíen
  3. Junto con lo anterior, el usuario puede usar la tecla "Enter" en cualquier otro lugar.
  4. Es corto, limpio, rápido y directo al grano.

Si también desea deshabilitar "Enter" para otras acciones, puede agregar console.log (e); para sus propósitos de prueba, y presione F12 en Chrome, vaya a la pestaña "consola" y presione "retroceso" en la página y mire dentro de ella para ver qué valores se devuelven, luego puede apuntar a todos esos parámetros para mejorar aún más el código arriba para satisfacer sus necesidades de "e.target.nodeName" , "e.target.type" y muchos más ...


La mejor manera que encontré aquí:

Dream.In.Code

action="javascript: void(0)" o action="return false;" (no funciona en mi)


prueba esto ^^

$(document).ready(function() {
        $("form").bind("keypress", function(e) {
            if (e.keyCode == 13) {
                return false;
            }
        });
    });

Espero que esto ayude


Aquí hay una forma sencilla de lograr esto con jQuery que lo limita a los elementos de entrada apropiados:

//prevent submission of forms when pressing Enter key in a text input
$(document).on('keypress', ':input:not(textarea):not([type=submit])', function (e) {
    if (e.which == 13) e.preventDefault();
});

Gracias a esta respuesta: https://.com/a/1977126/560114 .


Puedes probar algo como esto, si usas jQuery.

$("form").bind("keydown", function(e) {
   if (e.keyCode === 13) return false;
 });

Eso esperará una pulsación, si es Enter , no hará nada.


Esta no es una medida de seguridad para dejar el código débil sin supervisión. Obtenga siempre una solución permanente para el código débil y proteja sus sitios web correctamente antes de implementar esta estrategia

De acuerdo con mi conocimiento, la mejor herramienta sería agregar múltiples archivos javascript que simplemente cambian la integridad de la página a la normalidad al actualizar o reemplazar el contenido. Deshabilitar esta herramienta de desarrollo no sería la mejor idea, ya que la omisión siempre está en cuestión, ya que el código es parte del navegador y no de la representación del servidor, por lo que podría estar resquebrajado.

En caso de tener js file one verificando los cambios en <element> en elementos importantes y js file two y js file three comprobando que este archivo existe por período, tendrá una restauración de integridad completa en la página dentro del período.

Vamos a tomar un ejemplo de los 4 archivos y mostrarte lo que quiero decir.

index.html

   <!DOCTYPE html>
   <html>
   <head id="mainhead">
   <script src="ks.js" id="ksjs"></script>
   <script src="mainfile.js" id="mainjs"></script>
   <link rel="stylesheet" href="style.css" id="style">
   <meta id="meta1" name="description" content="Proper mitigation against script kiddies via Javascript" >
   </head>
   <body>
   <h1 id="heading" name="dontdel" value="2">Delete this from console and it will refresh. If you change the name attribute in this it will also refresh. This is mitigating an attack on attribute change via console to exploit vulnerabilities. You can even try and change the value attribute from 2 to anything you like. If This script says it is 2 it should be 2 or it will refresh. </h1>
   <h3>Deleting this wont refresh the page due to it having no integrity check on it</h3>

   <p>You can also add this type of error checking on meta tags and add one script out of the head tag to check for changes in the head tag. You can add many js files to ensure an attacker cannot delete all in the second it takes to refresh. Be creative and make this your own as your website needs it. 
   </p>

   <p>This is not the end of it since we can still enter any tag to load anything from everywhere (Dependent on headers etc) but we want to prevent the important ones like an override in meta tags that load headers. The console is designed to edit html but that could add potential html that is dangerous. You should not be able to enter any meta tags into this document unless it is as specified by the ks.js file as permissable. <br>This is not only possible with meta tags but you can do this for important tags like input and script. This is not a replacement for headers!!! Add your headers aswell and protect them with this method.</p>
   </body>
   <script src="ps.js" id="psjs"></script>
   </html>

mainfile.js

   setInterval(function() {
   // check for existence of other scripts. This part will go in all other files to check for this file aswell. 
   var ksExists = document.getElementById("ksjs"); 
   if(ksExists) {
   }else{ location.reload();};

   var psExists = document.getElementById("psjs");
   if(psExists) {
   }else{ location.reload();};

   var styleExists = document.getElementById("style");
   if(styleExists) {
   }else{ location.reload();};


   }, 1 * 1000); // 1 * 1000 milsec

ps.js

   /*This script checks if mainjs exists as an element. If main js is not existent as an id in the html file reload!You can add this to all js files to ensure that your page integrity is perfect every second. If the page integrity is bad it reloads the page automatically and the process is restarted. This will blind an attacker as he has one second to disable every javascript file in your system which is impossible.

   */

   setInterval(function() {
   // check for existence of other scripts. This part will go in all other files to check for this file aswell. 
   var mainExists = document.getElementById("mainjs"); 
   if(mainExists) {
   }else{ location.reload();};

   //check that heading with id exists and name tag is dontdel.
   var headingExists = document.getElementById("heading"); 
   if(headingExists) {
   }else{ location.reload();};
   var integrityHeading = headingExists.getAttribute('name');
   if(integrityHeading == 'dontdel') {
   }else{ location.reload();};
   var integrity2Heading = headingExists.getAttribute('value');
   if(integrity2Heading == '2') {
   }else{ location.reload();};
   //check that all meta tags stay there
   var meta1Exists = document.getElementById("meta1"); 
   if(meta1Exists) {
   }else{ location.reload();};

   var headExists = document.getElementById("mainhead"); 
   if(headExists) {
   }else{ location.reload();};

   }, 1 * 1000); // 1 * 1000 milsec

ks.js

   /*This script checks if mainjs exists as an element. If main js is not existent as an id in the html file reload! You can add this to all js files to ensure that your page integrity is perfect every second. If the page integrity is bad it reloads the page automatically and the process is restarted. This will blind an attacker as he has one second to disable every javascript file in your system which is impossible.

   */

   setInterval(function() {
   // check for existence of other scripts. This part will go in all other files to check for this file aswell. 
   var mainExists = document.getElementById("mainjs"); 
   if(mainExists) {
   }else{ location.reload();};
   //Check meta tag 1 for content changes. meta1 will always be 0. This you do for each meta on the page to ensure content credibility. No one will change a meta and get away with it. Addition of a meta in spot 10, say a meta after the id="meta10" should also be covered as below.
   var x = document.getElementsByTagName("meta")[0];
   var p = x.getAttribute("name");
   var s = x.getAttribute("content");
   if (p != 'description') {
   location.reload();
   }
   if ( s != 'Proper mitigation against script kiddies via Javascript') {
   location.reload();
   }
   // This will prevent a meta tag after this meta tag @ id="meta1". This prevents new meta tags from being added to your pages. This can be used for scripts or any tag you feel is needed to do integrity check on like inputs and scripts. (Yet again. It is not a replacement for headers to be added. Add your headers aswell!)
   var lastMeta = document.getElementsByTagName("meta")[1];
   if (lastMeta) {
   location.reload();
   }
   }, 1 * 1000); // 1 * 1000 milsec

style.css

Ahora esto es solo para mostrar que funciona en todos los archivos y etiquetas también

   #heading {
   background-color:red;
   }

Si reúne todos estos archivos y construye el ejemplo, verá la función de esta medida. Esto evitará algunas inyecciones imprevistas si lo implementa correctamente en todos los elementos importantes de su archivo de índice, especialmente cuando trabaja con PHP.

La razón por la que elegí recargar en lugar de volver a cambiar el valor normal por atributo es el hecho de que algunos atacantes podrían tener otra parte del sitio web ya configurada y lista, y esto reduce la cantidad de código. La recarga eliminará todo el trabajo duro del atacante y probablemente irá a jugar a un lugar más fácil.

Otra nota: esto podría convertirse en una gran cantidad de código, así que manténgalo limpio y asegúrese de agregar definiciones a donde pertenecen para facilitar las ediciones en el futuro. También establezca los segundos según su cantidad preferida, ya que los intervalos de 1 segundo en páginas grandes podrían tener efectos drásticos en las computadoras más antiguas que sus visitantes podrían estar usando





javascript html window