jQuery AlphaNumericPlugin-복합기 문제
-
10-07-2019 - |
문제
내가 사용하고 있다.영숫자 플러그인에 대한 jQuery 는 확실히 하고 내가 무엇을 기대하는 것으로 사용자가 직접 입력으로 textbox.하지만,만약 사용자들을 복사하고 붙여넣을 값으로 텍스트 상자에,모든 베팅은 꺼져 있습니다.
$("#<%= txtNumber.ClientID %>").alphanumeric({allow:"-"});
나는 확실히 할 수 있다:
$(document).ready(function() {
$("#<%= txtNumber.ClientID %>").blur(function() {
$("#<%= txtNumber.ClientID %>").val(
RemoveInvalidCharacters(
$("#<%= txtNumber.ClientID %>").val()
)
);
});
});
//FUNCTION REMOVES ANY ; IN TEXT TO PREVENT SQL INJECTION
function RemoveInvalidCharacters(text) {
return text.replace(';', '');
}
하지만...오히려 하지 않 kluge 내 코드와 함께 더욱.흐림()함수입니다.은 거기에 다른 어떤 방법으로 이것을 이용할 수 있을까요?
해결책
페이스트 이벤트 처리는 매우 간단합니다. 이 기술을 사용하고 있습니다 마스크 입력 플러그인 좋은 결과로. 소스를 탐색하여 사용중인 소스를 확인하십시오.
위의 예제에 대해 수정 된 관련 비트는 다음과 같습니다.
var pasteEventName = $.browser.msie ? 'paste' : 'input';
$("#<%= txtNumber.ClientID %>").bind(pasteEventName, function() {
setTimeout(function() {
RemoveInvalidCharacters(
$("#<%= txtNumber.ClientID %>").val()
);
}, 0);
});
다른 팁
여기서이 솔루션을 찾았습니다.http://www.devcurry.com/2009/10/ALLOW-ONLY-ALPHANUMERIC-CHARACTERS-in.html
<script type="text/javascript">
$(function() {
$('input.alpha').keyup(function() {
if (this.value.match(/[^a-zA-Z0-9 ]/g)) {
this.value = this.value.replace(/[^a-zA-Z0-9 ]/g, '');
}
});
});
</script>
<input type="text" name="test" value="" class="alpha">
가 필요로 하는 솔루션을 붙여 문제,그리고 나는 생각 밖으로 뭔가가 나를 위해 일할 것이다.사람이 사용할 수 있는 편집>붙여 브라우저에서 메뉴지만,Ctrl-V 뿐만 아니라,오른쪽 클릭하여 처리됩니다.에서 테스트 FF,IE,Opera,Safari,Chrome:
<!DOCTYPE html>
<html>
<head>
<title>Only Allow Certain Characters</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<br>
<form id="myform" action="">
<input id="element1" name="mytext1" type="text">
<input id="element2" name="mytext2" type="text">
</form>
<script>
/* removes evil chars while typing */
(function($){
$.fn.disableChars = function(a) {
a = $.extend({
allow: ''
}, a);
b = a.allow.split('');
for ( i=0; i<b.length; i++) b[i] = "\\" + b[i];
a.allow = b.join('');
var regex = new RegExp('[^a-z0-9' + a.allow + ']', 'ig');
$(this)
.bind('keyup blur', function() {
if (this.value.search(regex) != '-1') {
this.value = this.value.replace(regex, '');
}
})
.bind('contextmenu',function () {return false});
}
})(jQuery);
$("#element1").disableChars();
$("#element2").disableChars({allow:".,:-() "});
</script>
</body>
</html>
복사 및 붙여 넣기는 마스크 입력의 경우 확실히 어려운 과제입니다.
사용자가 값을 입력 할 때 양식이 제출 될 때 "특수 문자 인코딩"을 고려해 보셨습니까? 우리는 사용자가 텍스트 상자에 <및> 문자를 입력 할 수 있도록 동일한 작업을 수행합니다 (JavaScript를 통해 <및>로 변환 한 다음 뒤의 코드에서 <및>로 다시 들어갑니다.
이렇게하면 SQL 주입을 방지하지 않습니다. 나는 당신의 양식을 사용할 필요가 없습니다. 나는 내 것을 만들어 당신의 대본에 게시 할 수 있습니다. 더 쉽게 : JavaScript를 비활성화하고 데이터베이스를 떨어 뜨릴 수 있습니다.
대신 서버 측의 입력 유효성을 확인하십시오.
가장 쉬운 방법은 탈출하거나 매개 변수화 된 쿼리를 사용하는 것입니다.