2012-01-23 3 views
2

В моем текущем проекте у меня есть текстовое поле, в котором пользователь вводит некоторый числовой идентификатор (например, идентификатор продукта) - например: 12345-123-1234567-12345.Функция автоматического форматирования CRTL + V (Paste) в JavaScript asp.net

Я хочу иметь JavaScript в моей странице ASPX, что, когда пользователь нажимает Ctrl + V, чтобы вставить в текст, будет форматировать этот текст, независимо от нынешнего формата текста.

Например, если текст отформатирован как 12345---123-123456712345, тогда функция будет отформатировать его до 12345-123-1234567-12345.

EDIT:

Попробовал ваш Suggetion, но это не работает. Я попытался, как таким образом ... ниже пример кода

<asp:TextBox ID="TextBox1" runat="server" Text="" ></asp:TextBox> 
<br /> 
<br /> 

<script language="JavaScript" type="text/javascript"> 

    var tb = document.getElementById("TextBox1"); 
    tb.OnTextChanged = function() { 

     this.value = this.value.replace("---", "-"); 
    }; 

</script> 

Это erroring, говоря

Microsoft JScript runtime error: Unable to set value of the property 'OnTextChanged': object is null or undefined

+0

Беглый регулярное выражение может справиться с этим, "[^ (0-9)]". Замените все их на "". Если вам нужны тире между ними, вы можете повторить их и добавить после этого – annonymously

+0

замена/добавление тире не имеет большого значения ... Мне просто интересно, как я захвачу CRTL + V в javascript. как сказал я довольно новый для JS ... не очень уверен. можете ли вы разместить edxample .... если у вас есть. – Rahul

ответ

2

Чтобы обновить текстовое поле, когда его текст изменения, вы можете использовать «OnChange» событие (только отметить, что изменение не произойдет до тех пор, пока фокус не покинет текстовое поле)

Во-первых, дайте вашему текстовому окну уникальную версию id-asp.net версии 4, которая позволяет вам указывать элементы элементов формы, которые не будут «перепутаны», Затем установите событие onchange.

var tb = document.getElementById("textBoxId"); 
tb.onchange = function() { 
    //I think you want: 
    this.value = this.value.replace("---", "-"); 
}; 

EDIT

Вы можете поймать keyup событие, и проверить, если пользователь просто нажать Ctrl + V. Если это так, вы можете изменить текущее значение текстового поля. Просто отметьте, что это будет не работать, если пользователь вставляет правым щелчком.

Лучший способ справиться с этим - это событие onchange, которое будет работать независимо от того, как изменяется текстовое поле.

document.getElementById("tb").onkeyup = function (e) { 
     var key = e.which || e.keyCode; 
     if (e.which === 86 && e.ctrlKey) 
      alert("you pasted " + this.value); 
    }; 

DEMO

+0

Adam: Я попробую, и вы можете добавить текст снова, который вы удалили с помощью EDIT ... возникла идея :) – Rahul

+0

@Rahul - удаленный текст не имел большого значения. Я просто установил this.value для некоторой локальной переменной, что бессмысленно. –

+0

Спасибо Адаму, но где я буду называть эту функцию внутри другой функции JS? – Rahul

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