anurag19289 Ответов: 6

Разрешить только одну точку в текстовом поле


--I am using 
<pre lang="xml"><ajaxToolkit:FilteredTextBoxExtender ID="filtertext" runat="server"
       FilterType="Numbers, Custom" ValidChars="." TargetControlID="txtid">
   </ajaxToolkit:FilteredTextBoxExtender>



--Но я хочу только одну точку в текстовом поле. В настоящее время пользователь может ввести несколько точек.

Как я хочу

23.45
.45

если введено

48. (тогда он должен сделать это как 48.00)

Пожалуйста помогите

6 Ответов

Рейтинг:
5

anurag19289

<pre lang="xml"><script type="text/javascript">
      function validate() {
          var num = document.getElementById("txtid").value;
          if (isNaN(num) == true) {

              alert("Please enter numeric value!");
              document.getElementById("txtid").value = "";

          }
      }
  </script>


&ЛТ;АСП:текстовое поле с ID="txtid" cssclass="textBox_for6tds" атрибут runat="сервер" метода onkeyup="JavaScript для:проверки();" атрибутов xmlns:АСП="#неизвестный"&ГТ;

--или это можно сделать в onblur()


Рейтинг:
49

Karthik_Mahalingam

Проверьте этот аналогичный пост, разрешить только одну десятичную точку в текстовом поле в Asp.Net. [^]


anurag19289

Спасибо..это работает

Karthik_Mahalingam

добро пожаловать анурага :)

Рейтинг:
43

TrushnaK

попробовать это:-

document.getElementById('Textbox1').onkeypress = function (e) {
      if (e.keyCode === 46 && this.value.split('.').length === 2) {
        return false;
    }
}



попробуйте демо на:-http://jsfiddle.net/ygKHE/[^]


anurag19289

Спасибо, это хорошая идея, чтобы разделить и проверить.

Рейтинг:
2

joginder-banger

попробуйте с помощью функции contains. как это

TextBox tt = new TextBox();
       if (tt.ToString().Contains('.'))
       {
           //code here
       }

я надеюсь, что это полная помощь для вас. для любого запроса нажмите, чтобы ответить.


TrushnaK

он хочет позволить себе хотя бы один раз.

Рейтинг:
2

solomn517

вы можете использовать приведенный ниже javascript.

function isNumberDecimalKey(evt, ctlName, decimalPlaces) {
           var key;

           var isShift;

           if (window.event) {

               key = window.event.keyCode;

               isShift = window.event.shiftKey ? true : false;

           } else {

               key = evt.which;

               isShift = evt.shiftKey ? true : false;

           }

           if (isShift) {

               switch (key) {

                   case 16:

                   case 37:

                       return false;

                       break;

                   default:

                       return false;

                       break;

               }

           }
           //debugger;
           var charCode = (evt.which) ? evt.which : event.keyCode;

           var txtValue = document.getElementById(ctlName.id).value

           //does not include current keypress
           if (charCode == 8 || charCode == 9 || charCode == 46 || charCode == 37 || charCode == 39)    // Backspace or tab or delete
               return true;


           if (charCode == 190 || charCode == 110) //decimal   Not allowing decimals
           {
               if (txtValue.indexOf(".") != -1)
                   return false;
               else
                   return true;
           }
           else if ((charCode > 57 || (charCode > 31 && charCode < 48)) && !(charCode >= 96 && charCode <= 105)) {     //48-0, 96-numpad 0 Omitting both 0(zeroes)
               return false;
           }
           else {
               if (decimalPlaces != null && txtValue.indexOf(".") != -1) {
                   var txtSplit = txtValue.split(".");
                   var caretPosition = doGetCaretPosition(ctlName);
                   if (txtSplit[1].length == decimalPlaces && caretPosition > txtSplit[0].length) {
                       // if input is over the max decimal place, detect whether current selection existing.
                       var selectionText = "";
                       if (window.getSelection) {
                           selectionText = window.getSelection();
                       }
                       else if (document.selection) {
                           selectionText = document.selection.createRange().text;
                       }
                       return selectionText.length != 0;
                   }
               }
               return true;
           }
       }

       function doGetCaretPosition(ctrl) {
           var CaretPos = 0;
           // IE Support
           if (document.selection) {
               ctrl.focus();
               var Sel = document.selection.createRange();
               Sel.moveStart('character', -ctrl.value.length);
               CaretPos = Sel.text.length;
           }
           // Firefox support
           else if (ctrl.selectionStart || ctrl.selectionStart == '0')
               CaretPos = ctrl.selectionStart;


           return (CaretPos);
       }



вызов его метода OnKeyDown событие в текстовое поле
return isNumberDecimalKey(event, this, 2);

где 2-допустимое количество знаков после запятой


Рейтинг:
1

Gitanjali Singh

Вы можете попробовать это регулярное выражение.
^(?=\Д*\г)\г*(\.\д+)?$
Это может помочь.


TrushnaK

это регулярное выражение не может добавить "." за один раз.
он хочет добавить "." только в одно время.

Но мне нужна только одна точка в текстовом поле. В настоящее время пользователь может ввести несколько точек.