「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > フォームIDを取得します。それはあなたが考えていることではありません

フォームIDを取得します。それはあなたが考えていることではありません

2024 年 11 月 8 日に公開
ブラウズ:552

Getting form id. It is not what you think

次のようなフォームがあったことがあります:

そして、JavaScript を使用してその ID を取得しようとしました:

const form  = document.getElementById("#hello")
console.log(form.id)

しかし、これにより以下が返されました:

   
代わりに

HTMLElement を使用します。したがって、この問題を軽減するために、代わりに getAttribute 関数を使用しました:

const form  = document.getElementById("#hello")
console.log(form.getAttribute('id'))

使ったところ

最初は、この例は問題とは無関係のように思えます。しかし、私の場合、HTMLElementが引数として受け取られるユーティリティライブラリを開発していました:

function formEnable(form,enable,resetFeedback=true){

    // checks whether for is an actual form are ommited for simplicity
    const formId = form.id
    const submitBtn = form.querySelector(`button[type="submit"]`)?? document.querySelector(`button[form="${formId}"][type="submit"]`) ?? document.querySelector(`button[form="${formId}"]`);

   if(!submitBtn){
        throw Error("Unable to enable or disable form")
   }
  // Form Enabling Logic
}

私の場合、この関数を使用してフォームを有効にするロジックを配置しましたが、ID という名前の非表示の入力がフォームの入力フィールドとして使用されていたため、ボタンの取得に失敗しました。

したがって、代わりに次のようにしました:

function formEnable(form,enable,resetFeedback=true){

    // checks whether for is an actual form are ommited for simplicity
    const formId = form.getAttribute('id');
    const submitBtn = form.querySelector(`button[type="submit"]`)?? document.querySelector(`button[form="${formId}"][type="submit"]`) ?? document.querySelector(`button[form="${formId}"]`);

   if(!submitBtn){
        throw Error("Unable to enable or disable form")
   }
  // Form Enabling Logic
}

フォーム内に存在する入力とその名前に関する id 属性を受け取ったことを確認します。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/pcmagas/getting-form-id-it-is-not-what-you-think-4ac?1 侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3