フォームを作成しています。そして、1つのinput
タグにはOnClick
イベントハンドラーがあります。これはポップアップを開き、そこで何かを選択して、input
タグを自動入力します。
その入力タグもreadonly
なので、正しいデータのみが入力されます。
これはinput
タグのコードです:
<input type="text" name="formAfterRederict" id="formAfterRederict" size="50" required readonly="readonly" OnClick="choose_le_page();" />
ただし、required
属性はChromeでは機能しません。ただし、フィールドは必須です。
誰かが私がそれを機能させる方法を知っていますか?
私はあなたと同じ要件を持っていて、これを行う簡単な方法を見つけました。 「読み取り専用」フィールドも「必須」にしたい場合(これは基本的なHTMLではサポートされていません)、カスタム検証を追加するのが面倒だと感じたら、次のようにjqueryを使用してフィールドを読み取り専用にします:
<input type="text" class="readonly" required />
<script>
$(".readonly").keydown(function(e){
e.preventDefault();
});
</script>
[〜#〜] edit [〜#〜]
@Ed Bayiatesがコメントで指摘したように、次のようにpreventDefaultに貼り付けハンドラを追加することもできます。
<input type="text" class="readonly" required />
<script>
$(".readonly").on('keydown paste', function(e){
e.preventDefault();
});
</script>
readonly
フィールドにはrequired
属性を含めることはできません。これは一般に、すでに何らかの値を保持していると想定されているためです。
これは仕様です。 公式のHTML5標準ドラフト によると、「readonly
属性が入力要素に指定されている場合、要素は 制約の検証から除外 です。」 (たとえば、その値はチェックされません。)
readonly
を削除して関数を使用
<input type="text" name="name" id="id" required onkeypress="return false;" />
あなたが望むように動作します。
はい、この問題の回避策があります。 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;
}
誰かがhtmlからのみそれをしたい場合、これは私のために機能します。
<input type="text" onkeydown="event.preventDefault()" required />
Required
と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;"
を追加できますが、Month Picker
を使用したため、私の場合はそうではありませんでした。私のMonth picker
はクリックするとダイアログを表示します。
回答@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" />
追伸誰かがcut
イベントがcopy
イベントに変換されることを知っていますか?
これは役立つと思います。
<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>
テンプレートに対してこれを行うことができます。
<input required onfocus="unselect($event)" class="disabled">
そして、これはあなたのjsのために:
unselect(event){
event.preventDefault();
event.currentTarget.blur();
}
ユーザーに対しては、無効化された入力用のcss-classがあれば、入力は無効化され、同時に必要になります。
必須と読み取り専用は連動しません。
ただし次のように2つの入力を行うことができます。
<input id="One" readonly />
<input id="Two" required style="display: none" /> //invisible
そして、値Two
を入力One
内の値に変更します。