문제

내가 사용하고 있다.영숫자 플러그인에 대한 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를 비활성화하고 데이터베이스를 떨어 뜨릴 수 있습니다.

대신 서버 측의 입력 유효성을 확인하십시오.

가장 쉬운 방법은 탈출하거나 매개 변수화 된 쿼리를 사용하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top