2015-04-22 3 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

Также это не работает, если вы добавляете идентификатор elment в прослушиватель событий? –

+0

@SaoTith, в прослушивании событий я использую 'input' вместо' keyup', потому что он более отзывчив. 'keyup' запускается только тогда, когда вы отпускаете ключ, но« ввод »запускается после ввода каждого символа (поэтому, если вы удерживаете« j », пока не получите« jjjjj », тогда у вас будет пять событий. id, вам нужно посмотреть на '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

Я прочитал его как вопрос о том, как определить начало ввода с. Как и в вопросе, предупреждение - это всего лишь некоторый пример кода, который запускается, когда это так, он заменит это w с реальным кодом. – 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. Мне нужно только обнаружить в первой позиции (первую букву почтового кода) –