2015-03-12 3 views
2

Я хочу закодировать требование, где мне нужно, чтобы Маска несколько символов в текстовом поле в jsp.Как маскировать несколько символов в текстовом поле в Jsp

Для примера: Мое текстовое поле принимает 11 цифр в качестве входных данных. Скажите 12345678911

Мне нужно отобразить ***** 678911 на стороне клиента, но необходимо передать 12345678911 на стороне сервера.

Я знаю, что могу использовать скрытое поле, где я могу сохранить значение без маски и отобразить замаскированное значение в TextField.

Но пользователь может использовать клавиши со стрелками или мышь для редактирования 2-го символа после ввода всего, так что логика здесь не работает.

Ниже мой код:

<SCRIPT LANGUAGE="Javascript"> 

var a = document.getElementById("hiddenText").value; 

var val = document.getElementById("repeat").value; 
function mask(str,textbox){ 
var mask; 

     switch(str.length){ 

     case 1: 
      this.val = str; 

      mask = "*"; 
      break; 
     case 2: 
      val = val + str.charAt(1); 
      mask = "**"; 
      break; 
     case 3: 
      val = val + str.charAt(2); 
      mask = "***"; 
      break; 
     case 4: 
      val = val + str.charAt(3); 
      mask = "****"; 
      break; 
     case 5: 
      val = val + str.charAt(4); 
      mask = "*****"; 
      break; 
     case 6: 
      val = val + str.charAt(5); 
      mask = "*****" + val.substring(5,6); 
      break; 
     case 7: 
      val = val + str.charAt(6); 
      mask = "*****" + val.substring(5,7); 
      break; 
     case 8: 
      val = val + str.charAt(7); 
      mask = "*****"+ val.substring(5,8); 
      break; 
     case 9: 
      val = val + str.charAt(8); 
      mask = "*****"+ val.substring(5,9); 
      break; 
     case 10: 
      val = val + str.charAt(9); 
      mask = "*****"+ val.substring(5,10); 
      break; 
     case 11: 
      val = val + str.charAt(10); 
      mask = "*****"+ val.substring(5,11); 
      break; 
     default: 

      break; 
     } 


textbox.value = mask; 
document.getElementById("repeat").value = val 
if (document.getElementById("repeat").value.length > 11){ 
    var h = document.getElementById("repeat").value; 
    h = h.substring(0,11); 
    document.getElementById("repeat").value = h; 
} 
} 
</SCRIPT> 

Это прекрасно работает, если пользователь вводит значение в один присест, но если он изменяет введенное значение, перемещая курсор с помощью клавиш со стрелками или с помощью мыши, то он терпит неудачу.

Ваша помощь была бы высоко оценена!

Спасибо!

+0

Загляните в [JQuery Mask Plugin] (http://igorescobar.github.io/jQuery-Mask-Plugin/) –

+0

Спасибо за ваш быстрый ответ. Я не очень хорошо понимаю это решение. Но этот псевдодальный код замаскирует все символы в текстовом поле. Тем не менее, я ищу, чтобы замаскировать только 5 символов в текстовом поле. – Abhishek

ответ

1

Скачать jquery.maskedinput.js отсюда.

  1. Когда DOM готова

$.mask.definitions['n'] = "[0-9]"; Теперь п обозначает любую цифру; `

Затем введите следующую

jQuery(function($){jQuery(function($){ $("yourINPUT").mask("nnnnn678911",{placeholder:"#"}); });

Пора-безопасно использовать то, что есть готовый, чем изобретать колесо;

Смежные вопросы