2015-04-22 42 views
1

我在尋找一個函數,當在郵政編碼的第一個位置按下某個字符鍵(g)時會發出提示,如果郵政編碼有一個字母G,則會禁用提交按鈕在一開始的時候。 這可能嗎?jquery on keypress

我當前的代碼目前檢測的關鍵上來就郵政編碼字段是這樣的:

$(document).ready(function() { 
 
    var someTextInputField = "#postal-code"; 
 
    
 
    $(someTextInputField).on("keyup", function() { 
 
    alert('not a valid postal code'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input id="postal-code" />

回答

1

的Javascript沒有額外的庫

document.addEventListener("input", function(e) { 
 
    if (e.target.id === "postal-code") { 
 
    var disable = /^g/i.test(e.target.value), 
 
     submit = document.getElementById("submit"); 
 
    
 
    if (disable && !submit.disabled) { 
 
     alert("You cannot start a postal code with a G"); 
 
    } 
 
    
 
    submit.disabled = disable; 
 
    } 
 
});
<input placeholder="Address" /> 
 
<input id="postal-code" placeholder="Postal Code" /> 
 
<button id="submit">Submit</button>

jQuery的

$(document).on("input", "#postal-code", function (e) { 
 
    var disable = /^g/i.test(this.value), 
 
     $submit = $("#submit"); 
 
    
 
    if (disable && !$submit.prop("disabled")) { 
 
     alert("You cannot start a postal code with a G"); 
 
    } 
 
    
 
    $submit.prop("disabled", disable); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input placeholder="Address" /> 
 
<input id="postal-code" placeholder="Postal Code" /> 
 
<button id="submit">Submit</button>

+0

這工作,但怎麼辦我得到一個提醒使用此功能彈出? –

+0

如果您將事件ID添加到事件偵聽器,這也不起作用嗎? –

+0

@SaoTith,在事件監聽器中,我使用'input'而不是'keyup',因爲它更具響應性。 'keyup'只有在你釋放鍵時纔會被觸發,但是在每個字符被輸入後觸發'input'(所以如果你按住「j」直到得到「jjjjj」,那麼你將有五個事件。你需要看看'e.target',這是實際的輸入框,我將修改答案來顯示這個 – redbmk

0

您可以使用this.value[0]來獲取輸入的第一個字符。然後測試它是否是允許的字符之一。

$("#input").on("keyup", function() { 
 
    if (this.value != '') { 
 
    var firstchar = this.value[0].toUpperCase(); 
 
    if (firstchar != 'A' && firstchar != 'G') { 
 
     alert('not a valid postal code'); 
 
     $("#submitID").prop("disabled", true); 
 
    } else { 
 
     $("#submitID").prop("disabled", false); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="input"/>

+1

我讀到這個問題,因爲如果輸入以「g」開頭,需要禁用提交按鈕。 – redbmk

+1

我將它讀爲詢問如何檢測輸入開始在問題中,alert只是一些示例代碼,在這種情況下運行時,他會替換w ith真實的代碼。 – Barmar

+0

需要發生的事情是,當郵政編碼字段的第一個輸入字符爲G或g時,需要禁用「提交」按鈕,並自動發出警報,表明該提交按鈕不是有效的郵政編碼並刪除輸入。感謝您的回覆,儘管 –

0

檢查這個小提琴http://jsfiddle.net/oyc2L9sy/12/

HTML:

<input id="test" type="text" /> 

的javascript:

$(document).ready(function() { 
    $("#test").on("keypress", function(e) { 
     if ((e.keyCode == '65') || 
      (e.keyCode == '71')) { 
      alert('not a valid postal code'); 
      return false; 
     } 
    }); 
}); 
+0

這也將禁用任何時間g或G鍵入我只需要檢測第一個位置(郵政編碼的第一個字母) –