搜尋

首頁  >  問答  >  主體

防止在欄位中輸入無效字元:綜合指南

<p><code>Onkeydown</code>,我執行以下 JavaScript:</p> <pre class="brush:php;toolbar:false;">function ThisOnKeyDown(el) { if (el.title == 'textonly') { !(/^[A-Za-zÑñ-s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ-s]/ig, '') : null; } if (el.title == 'numbersonly') { !(/^[0-9]*$/i).test(el.value) ? el.value = el.value.replace(/[^0-9]/ig, '') : null; } if (el.title == 'textandnumbers') { !(/^[A-Za-zÑñ0-9-s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ0-9-s ]/ig, '') : null; } }</pre> <p>這三個標題屬性之一被賦予頁面上的各個輸入欄位。只要正確刪除無效字符,該代碼就可以工作,但直到輸入下一個字符為止。我想找到一種方法來簡單地拒絕無效輸入。感謝您的幫忙! </p> <p><strong>編輯</strong>:我在全球創建事件。我是這樣做的:</p> <pre class="brush:php;toolbar:false;">function Globalization() { var inputs = document.getElementsByTagName('input'); for (i = 0; i < inputs.length; i ) { inputs[i].onfocus = createEventHandler( ThisOnFocus, inputs[i]); inputs[i].onblur = createEventHandler( ThisOnBlur, inputs[i]); inputs[i].onkeydown = createEventHandler( ThisOnKeyDown, inputs[i]); inputs[i].onkeyup = createEventHandler( ThisOnKeyUp, inputs[i]); } }</pre> <p><code>全球化()</code>運行<code>body.onload</code></p> <p>因此,典型的輸入欄位具有 HTML,沒有像這樣的函數呼叫:</p> <pre class="brush:php;toolbar:false;"><input id="AppFirstName" style="width: 150px;" type="text" maxlength="30" title="textonly"/> ;</pre> <p><br /></p>
P粉124890778P粉124890778463 天前512

全部回覆(2)我來回復

  • P粉034571623

    P粉0345716232023-08-28 14:43:57

    上面的程式碼確實說明了這一點——只允許數字。您可以透過新增異常來修改它,例如像這樣的 BACKSPACE

    
        
            
            
            sssccc
            
        
            
        
    
    

    回覆
    0
  • P粉807471604

    P粉8074716042023-08-28 10:06:49

    為了防止它首先被設置,您可以在 keydown 事件處理程序上傳回 false,從而防止事件進一步傳播。

    我使用 jQuery 編寫了下面的範例,但是您可以在傳統綁定時使用相同的函數。

    儘管在伺服器端驗證也很重要,但為了使用者友善性,客戶端驗證也很重要。

    $("input.number-only").bind({
        keydown: function(e) {
            if (e.shiftKey === true ) {
                if (e.which == 9) {
                    return true;
                }
                return false;
            }
            if (e.which > 57) {
                return false;
            }
            if (e.which==32) {
                return false;
            }
            return true;
        }
    });

    回覆
    0
  • 取消回覆