Google Chrome では、一部の顧客が支払いページに進むことができません。フォームを送信しようとすると、次のエラーが表示されます:
name='' の無効なフォーム コントロールはフォーカスできません。
これは JavaScript コンソールからのものです。
問題は、隠しフィールドに必須属性があることが原因かもしれないと読みました。問題は、HTML5 の必須属性ではなく、.net Web フォームの必須フィールド検証を使用していることです。
このエラーが発生する人はランダムのようです。これに対する解決策を知っている人はいますか?
ベストアンサー1
この問題は、フォーム フィールドの検証に失敗した場合、Chrome で発生しますが、それぞれの無効なコントロールがフォーカス可能ではないため、その横に「このフィールドに入力してください」というメッセージを表示しようとするブラウザーの試みも失敗します。
検証がトリガーされた時点でフォーム コントロールにフォーカスできない理由はいくつかあります。次に説明する 2 つのシナリオが最も顕著な原因です。
フィールドは、ビジネス ロジックの現在のコンテキストでは無関係です。このようなシナリオでは、それぞれのコントロールを無効にするか、DOM から削除するか、
required
その時点で属性でマークしないようにする必要があります。ユーザーが入力時にENTERキーを押すと、検証が早期に実行される場合があります。または、フォーム内のボタン/入力コントロールをクリックしたとき
type
に、コントロールの属性が正しく定義されていない可能性があります。ボタンの type 属性が に設定されていない場合button
、Chrome (または他のブラウザ) は、ボタンがクリックされるたびに検証を実行します。これはsubmit
、 がボタンの属性のデフォルト値であるためですtype
。
この問題を解決するには、ページ上に送信やリセット以外の操作を実行するボタンがある場合は、必ず次の操作を実行してください<button type="button">
。