【问题标题】:Not allowing to write spaces in input using Javascript不允许使用 Javascript 在输入中写入空格
【发布时间】:2014-04-29 07:59:15
【问题描述】:

我一直在寻找很多功能,让我阻止用户在我的输入上写空格但我似乎没有人真正与我合作.. 也许我不只是以正确的方式做如果能提供一点帮助,我将不胜感激。

这是我的 HTML 表单:

<table>
<form name="form_registar" method="post" action="registado.php" onsubmit="return validateForm()">
    <tr>
      <td colspan="2" align="center">
        <input type="text" name="user" placeholder="Nome de Utilizador" id="textboxEmail" maxlength="20">
      </td>
    </tr>
    <tr>
      <td>
        <input type="password" name="pw" placeholder="Password" id="textbox" maxlength="15">
      </td>
      <td>
        <input type="password" name="cpw" placeholder="Confirmar Password" id="textbox" maxlength="15">
      </td>
    </tr>
    <tr>
      <td>
        <input type="text" name="nome" placeholder="Nome" id="textbox" onkeypress="return isLetter(event)" maxlength="15">
      </td>
      <td>
        <input type="text" name="apelido" placeholder="Apelido" id="textbox" onkeypress="return isLetter(event)" maxlength="15">
      </td>
    </tr>
    <tr>
      <td colspan="2" align="center">
        <input type="text" name="email" placeholder="E-mail" id="textboxEmail" maxlength="50">
      </td>
    </tr>
    <tr>
      <td>
        Data de Nascimento:
      </td>
      <td>
        <input type="date" name="dataNasc" id="textbox">
      </td>
    </tr>
    <tr>
      <td>
        Masculino<input type="radio" name="sex" value="M" checked>
      </td>
      <td>
        Feminino<input type="radio" name="sex" value="F">
      </td>
    </tr>
    <tr>
      <td>
        <button type="submit" class="submit-button"><b>Registar</b></button>
      </td>
  </form>
  <form action="index.html">
  <td>
  <button type="submit" class="submit-button">Cancelar</button>
  </td>
  </form>
  </tr>
</table>

我想阻止用户在一个或多个输入字段中写入空格。我不知道该怎么做。

编辑:isLetter 和 isNumber 是只允许用户分别写字母和数字的函数。

附加信息: 这是我的 javascript 函数,我正在寻找一个阻止用户写入空格的函数:

/* APENAS PERMITE NUMEROS */
 function isNumber(evt) {
         evt = (evt) ? evt : window.event;
         var charCode = (evt.which) ? evt.which : evt.keyCode;
         if (charCode > 31 && (charCode < 48 || charCode > 57)) {
             return false;
         }
         return true;
     }
     /* APENAS PERMITE LETRAS */
 function isLetter(evt) {
         evt = (evt) ? evt : event;
         var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
             ((evt.which) ? evt.which : 0));
         if (charCode > 31 && (charCode < 65 || charCode > 90) &&
             (charCode < 97 || charCode > 122)) {
             return false;
         }
         return true;
     }
     /* VALIDAR O FORM */
 $(function chora() {
     $('#user').on('keypress', function chora(e) {
         if (e.which == 32)
             return false;
     });
 });

 function validateForm() {
     /* USERNAME */
     var a = document.forms["form_registar"]["user"].value;
     if (a == null || a == "") {
         alert("O Username não está preenchido.");
         return false;
     }
     /* PASSWORD */
     var b = document.forms["form_registar"]["pw"].value;
     if (b == null || b == "") {
         alert("A password não está preenchida.");
         return false;
     }
     /* CONFIRMAR PASSWORD */
     var c = document.forms["form_registar"]["cpw"].value;
     if (c == null || c == "") {
         alert("A confirmação de password não está preenchida.");
         return false;
     }
     /* NOME */
     var d = document.forms["form_registar"]["nome"].value;
     if (d == null || d == "") {
         alert("O nome não está preenchido.");
         return false;
     }
     /* APELIDO */
     var e = document.forms["form_registar"]["apelido"].value;
     if (e == null || e == "") {
         alert("O apelido não está preenchido.");
         return false;
     }
     /* EMAIL */
     var f = document.forms["form_registar"]["email"].value;
     var atpos = f.indexOf("@");
     var dotpos = f.lastIndexOf(".");
     if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= f.length) {
         alert("O E-mail não se encontra devidamente preenchido.");
         return false;
     }
     /* DATANASC */
     var g = document.forms["form_registar"]["dataNasc"].value;
     if (g == null || g == "") {
         alert("A Data de Nascimento não está preenchida.");
         return false;
     }
     /* CONFIRMAÇAO PW*/
     var h = document.forms["form_registar"]["pw"].value;
     var i = document.forms["form_registar"]["cpw"].value;
     if (h != i) {
         alert("As passwords não correspondem.");
         return false;
     }

 }

【问题讨论】:

标签: javascript


【解决方案1】:

我也为此制作了一个 Jsfiddle。看看这里。

我使用了“keyCode”和“which”功能。 这将适用于浏览器和 IOS ipad 和 iphone,但不适用于 Android 手机。他们不注册“KeyCode”或“which”或“keyChar”

var keycode;
$('.nospace').keypress(function (event) {
   keycode = (event.charCode) ? event.charCode : ((event.which) ? event.which : event.keyCode);
   if (keycode == 32) {
    return false
  };
});

检查 jsfiddle 链接。 http://jsfiddle.net/shinde87sagar/P5Kjr/4/

【讨论】:

    【解决方案2】:

    onkeypress 为时已晚。试试onkeydown

    【讨论】:

    • 这看起来像是一条评论。尝试通过更多解释或示例来扩展您的答案。
    【解决方案3】:

    您可以通过检查空格键是否按下然后返回false 来阻止用户使用空格键,如下所示:

    ​$("input").on("keydown", function (e) {
        return e.which !== 32;
    });​​​​​
    

    Take a look at this working example

    【讨论】:

    • 我在哪里写呢?如何将函数“调用”到表单?
    • @White8Tiger 只需将其添加到您的 javascript 代码中? Like this?
    【解决方案4】:

    Working fiddle

    jQuery 代码

    $("input").on({
        keydown: function (e) {
            if (e.which === 32) return false;
        },
        change: function () {
            this.value = this.value.replace(/\s/g, "");
        }
    });
    

    Reference

    【讨论】:

      【解决方案5】:

      我建议你看看 jQuery。 然后你可以使用这个:

      $('#textbox').on('keydown',function(){
        var $this = $(this);
        var value = $this.val();
        $this.val(value.replace(/\s+/g,'')); // remove all whitespace characters
      });
      

      此外,您有多个 id 为“textbox”的元素。每个 id 都应该是唯一的。

      【讨论】:

      • ID 在文档中应该是唯一的。您可以使用 css 类来实现相同的格式:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      相关资源
      最近更新 更多