Подтвердить что ты не робот

HTML требуется только для ввода в форме

Я делаю форму. И на одном теге input есть обработчик событий OnClick, который открывает всплывающее окно, где вы можете выбрать какой-то материал, а затем он автоматически обрабатывает тег input.

Этот тег ввода также readonly, поэтому будут введены только правильные данные.

Это код тега input:

<input type="text" name="formAfterRederict" id="formAfterRederict" size="50" required readonly="readonly" OnClick="choose_le_page();"  />

Но атрибут required не работает в Chrome. Но поле требуется.

Кто-нибудь знает, как я могу заставить его работать?

4b9b3361

Ответ 1

У меня было такое же требование, как и у вас, и я придумал простой способ сделать это. Если вы хотите, чтобы поле "readonly" также было "обязательным" (которое не поддерживается базовым HTML), и вы чувствуете себя слишком ленив, чтобы добавить собственную проверку, просто сделайте поле только для чтения, используя jquery следующим образом:

<input type="text" class="readonly" required />

<script>
    $(".readonly").keydown(function(e){
        e.preventDefault();
    });
</script>

ИЗМЕНИТЬ

как @Ed Bayiates указал в комментарии, вы также можете добавить обработчик пасты для предотвращенияDefault следующим образом:

<input type="text" class="readonly" required />

<script>
    $(".readonly").on('keydown paste', function(e){
        e.preventDefault();
    });
</script>

Ответ 2

readonly поля не могут иметь атрибут required, так как обычно предполагается, что они уже будут иметь некоторое значение.

Ответ 4

Удалите readonly и используйте функцию

<input type="text" name="name" id="id" required onkeypress="return false;" />

Он работает по вашему желанию.

Ответ 5

Да, есть решение этой проблемы. Я нашел его с https://codepen.io/fxm90/pen/zGogwV сайта.

Решение заключается в следующем.

HTML файл

<form>
  <input type="text" value="" required data-readonly />
  <input type="submit" value="Submit" />
</form>

Файл CSS

input[data-readonly] {
  pointer-events: none;
}

Ответ 6

Я думаю, что это должно помочь.

<form onSubmit="return checkIfInputHasVal()">
    <input type="text" name="formAfterRederict" id="formAfterRederict" size="50" required readonly="readonly" OnClick="choose_le_page();"  />
</form>

<script>
     function checkIfInputHasVal(){
        if($("#formAfterRederict").val==""){
             alert("formAfterRederict should have a value");
             return false;
        }
     }
</script>

Ответ 7

Вы можете сделать это для своего шаблона:

<input required onfocus="unselect($event)" class="disabled">

И это для вашего js:

unselect(event){
    event.preventDefault();
    event.currentTarget.blur();
}

Для пользователя вход будет отключен и необходим в одно и то же время, если у вас есть класс css-класса для отключенного ввода.

Ответ 8

На основе ответа @KanakSinghal, но без блокировки всех ключей и с заблокированным событием cut

$('.readonly').keydown(function(e) {
  if (e.keyCode === 8 || e.keyCode === 46)  // Backspace & del
    e.preventDefault();
}).on('keypress paste cut', function(e) {
  e.preventDefault();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="readonly" value="test" />

Ответ 9

Требуется и только для чтения не работают вместе.

Хотя вы можете сделать два ввода, как это:

<input id="One" readonly />
<input id="Two" required style="display: none" /> //invisible

И измените значение Two на значение, которое находится внутри входного One.

Ответ 10

Если кто-то хочет сделать это только из HTML, это работает для меня.

<input type="text" onkeydown="event.preventDefault()" required />

Ответ 11

Требуется и только для чтения не работают вместе.

Но readonly может быть заменен следующей конструкцией:

     <input     type="text"
                onkeydown="return false;"
                style="caret-color: transparent !important;"                   
                required>

1) onkeydown прекратит манипуляции с данными

2) style="caret-color: transparent !important;" скроет курсор

3) вы можете добавить style="pointer-events: none;" если у вас нет каких-либо событий на вашем входе, но это был не мой случай, потому что я использовал месяц выбора. Выбор месяца показывает диалоговое окно при нажатии.

Ответ 12

  function validateForm() {
    var x = document.forms["myForm"]["test2"].value;
    if (x == "") {
      alert("Name missing!!");
      return false;
    }
  }
  <form class="form-horizontal" onsubmit="return validateForm()" name="myForm" action="" method="POST">
   <input type="text"  name="test1">
    <input type="text" disabled name="test2">
    <button type="submit">Submit</button>
</form>