1

html5 フォーム検証を使用する場合、エラー状態をクリアすることは不可能のようです。問題は、必要なラジオ ボタン グループにあります。ラジオ ボタンを選択せず​​に送信しようとすると、すべてのラジオがエラーとして強調表示されます。次に、1つのラジオを選択するとエラーが消えますが、選択したラジオをクリアする from.reset() を実行すると、ラジオが選択されていないためエラーが発生します。

これを回避する方法は見つかりませんでした。setCustomValidity('') を使用してみましたが、うまくいきませんでした。また、検証を一時的に無効にして再度有効にしても機能しません。

唯一の方法は、dom から from を完全に削除して再生することです。ラジオ ボタンのみを削除して再生成しても機能しません (少なくとも同じ ID では)。

何か案が?

fiddle を参照してください: http://jsfiddle.net/KDkvE/
オプションを選択せず​​に [次へ] をクリックします。次にリセットを押します。Firefox では、これはラジオ ボタンの周りの赤い枠をクリアしません。

<form>
<option name='test' type='radio' value='1' required/>
<option name='test' type='radio' value='2' required/>

<input type="submit" name="submitbutton" id="submitbutton" value="next">
<input type='reset' value='Reset'/>
</form>
4

1 に答える 1

1

これに対するエレガントな解決策を自分で探していましたが、これまでのところ賢い人は誰も答えていないので、このエレガントでない解決策を提供する必要があります。

<input type="radio" name="radio_button_name" onclick="for(i=0;i&lt;this.form[ this.name ].length;i++){ this.form[ this.name ][i].setCustomValidity('') }" oninvalid="custom validation message">

問題は、クリックしているラジオ ボタンだけでなく、各ラジオ ボタンの検証カスタム メッセージをリセットする必要があることです。

于 2016-05-02T02:54:49.577 に答える