2013-08-21 5 views
1

Не знаю, почему функция поиска() возвращает 0 для любого ввода с помощью SPECIAL CHARACTER, я хотел найти позицию 1-го появления специального символа. Когда я исправляю значение метода search(), он работает нормально, но когда я беру значение из текстового поля, он работает неправильно.search() функция javascript не ведет себя правильно

Ниже мой HTML код:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 

<script type="text/javascript" src="jquery-1.6.4.min.js"></script> 
<script type="text/javascript" src="test.js"></script> 

</head> 
<body> 

    <input type="text" id="txt" onkeyup="return checkLength();"/> 
    <input type="button" id="btn" value="Verify" onclick="getValue()"/> 


</body> 
</html> 

Ниже приведен сценарий, где я реализовал использование поиска() в JavaScript, но не знаю, почему я получаю значение 0 для любого входа. На самом деле я хотел найти положение 1-го особого характера.

$(document).ready(function() { 

    $('#btn').attr('disabled',true); 

    $("#txt").bind({ 
     paste : function(){ 
      $('#btn').attr('disabled',false); 
      checkLength(); 
     }, 
     cut : function(){ 
      checkLength(); 
     } 
    }); 
}); 

function checkLength(){ 

    var txtLength = $("#txt").val().length; 
    var banTxt = document.getElementById("txt").value; 

    if (txtLength != 0) { 

     if(isAlphaNumeric(document.getElementById("txt").value)) { 
      $('#btn').attr('disabled',false); 
     } else { 


      var str=banTxt; 
          //Here I am using search() to find position of Special Character. 
      var n=banTxt.search(/[^a-zA-Z ]/g); 
      alert("position of special char is: " + n); 


      var preTxt = banTxt.substring(0,(txtLength - 1)); 
      var preTxtLength = preTxt.length; 
      alert("Special characters are not allowed!"); 
      if(preTxtLength == 0){ 
       $('#btn').attr('disabled',true); 
       document.getElementById("txt").value = ""; 
      }else if(preTxtLength != 0){ 
       document.getElementById("txt").value = preTxt; 
       $('#btn').attr('disabled',false); 
      } 
     } 
    } else { 
     $('#btn').attr('disabled',true); 
    } 
} 

function isAlphaNumeric(inputString) { 
    return inputString.match(/^[0-9A-Za-z]+$/); 
} 

function getValue(){ 
    var txtValue = document.getElementById("txt").value; 
    alert("Value submitted is: " + txtValue); 
} 
+0

Пожалуйста, попробуйте ввести входные данные типа «123 # 4» (без кавычек). – Vishrant

+0

Какое значение вы ввели, что дало неожиданные результаты? – Bergi

+0

Я пробовал со строкой со специальными символами вроде 123 # 4 $ 5, 12 # 4 и т. Д., И я получаю предупреждение, поскольку позиция специального символа: 0 – Vishrant

ответ

0
var n=banTxt.search(/[^a-zA-Z ]/g); 

Я попытался шпагатом со специальными символами, как 123 # 4 $ 5, 12 # 4, и т.д., и я получаю уведомление, как положение специального полукокс: 0

Это то, что соответствует вашему регулярному выражению: никаких символов алфавита и пробелов - это цифры. Напротив, ваша функция isAlphaNumeric соответствует /^[0-9A-Za-z]+$/ - вы, вероятно, захотите выровнять их друг с другом.

0

Фактически я использовал следующую строку var n = banTxt.search (/ [^ a-zA-Z]/g); для получения позиции специального полукокса, в то же время, обратите внимание, что я использовал OnKeyUp событие так, если я копировать вставить код, то есть первый Ctrl затем v, Ctrl + v затем CTRl сам это событие keyup, я думаю, что это может быть причиной того, что я получаю 0 как позицию специального символа, так как после нажатия ctrl текст не вставляется, но событие onkeyup запускается.

Я ищу его решение.