Disable Text Entry in <input type=“number”>

前端 未结 2 1614
别跟我提以往
别跟我提以往 2020-12-16 03:55

I am making a simple web app. At one part of it, I have included an input box of type=\"number\"


An

2条回答
  •  孤城傲影
    2020-12-16 04:16

    You can use JavaScript (e.g. with jQuery) to allow only specific characters:

    // Catch all events related to changes
    $('#textbox').on('change keyup', function() {
      // Remove invalid characters
      var sanitized = $(this).val().replace(/[^0-9]/g, '');
      // Update value
      $(this).val(sanitized);
    });
    

    Here is a fiddle.

    Same thing with support for floats:

    // Catch all events related to changes
    $('#textbox').on('change keyup', function() {
      // Remove invalid characters
      var sanitized = $(this).val().replace(/[^0-9.]/g, '');
      // Remove the first point if there is more than one
      sanitized = sanitized.replace(/\.(?=.*\.)/, '');
      // Update value
      $(this).val(sanitized);
    });
    

    And here is another fiddle.

    Update: Although you might not need this, here is a solution that allows a leading minus sign.

    // Catch all events related to changes
    $('#textbox').on('change keyup', function() {
      // Remove invalid characters
      var sanitized = $(this).val().replace(/[^-0-9]/g, '');
      // Remove non-leading minus signs
      sanitized = sanitized.replace(/(.)-+/g, '$1');
      // Update value
      $(this).val(sanitized);
    });
    

    3rd fiddle

    And now a final solution that allows only valid decimals (including floats and negative numbers):

    // Catch all events related to changes
    $('#textbox').on('change keyup', function() {
      // Remove invalid characters
      var sanitized = $(this).val().replace(/[^-.0-9]/g, '');
      // Remove non-leading minus signs
      sanitized = sanitized.replace(/(.)-+/g, '$1');
      // Remove the first point if there is more than one
      sanitized = sanitized.replace(/\.(?=.*\.)/g, '');
      // Update value
      $(this).val(sanitized);
    });
    

    Final fiddle

提交回复
热议问题