1

この質問は、「JavaScript を使用してフィールドを必須に設定しますか?」というタイトルでもかまいません。

<form class="theform" action="#" method="post" name="theform">
    <label for="tname">Team Name:</label>
    <input type="text" placeholder="Bears" required /><br>
    <label for="captain">Captain:</label>
    <input type="text" placeholder="Captain's Name" required /><br>
    <button type="submit" value="Submit" onclick="toggleReq()" >Submit</button>
</form>

これは私のフォームの非常に単純化されたバージョンです。これは奇妙に思えるかもしれませんが、「Captain」フィールドを空にして として設定してフォームを実際に送信したいと考えていrequiredます。

required送信ボタンがクリックされたときにjavascriptに属性を削除させることで、これが可能になるかもしれないと考えていましたonclick="toggleReq()"


誰もがなぜこれが有用なのかを知りたがっているので、説明します: ユーザーが空のままにしておくように指示された追加のフォーム フィールドを含めることでスパマーをくじくことができるという概念が少し前に導入されました。(理想的には、このフィールドは非表示にする必要があります。実際のユーザーはその存在を知る必要はありません。) スパムボットが自動的にダミー フィールドに入力するため、どのコメントがスパムボットから来たかが明らかになります。

私が対処しようとしているこのアプローチには、いくつかの弱点があります。スパムボットは、必須ではないフィールドを無視する可能性があります。ただし、ダミーフィールドを必須にするだけでは、実際のユーザーがフォームを送信できなくなります。したがって、ボットを捕まえる最善の方法は、入力フィールドを用意しrequired、必須のタグを無視することです。技術的に無視することはできませんが、required属性をオフにすることは可能です。

4

1 に答える 1

1

キャプテンの名前フィールドを特定すると、非常に簡単です。「キャプテン」のIDを想定:

function toggleReg(){
   $("#captain").removeAttr('required');
}

または、jQuery以外のバージョン:

function toggleReq() {
   document.getElementById("captain").removeAttribute("required");
}

もちろん、真の「トグル」が必要な場合は、最初に現在の状態を読み取る必要があります。

于 2013-02-05T21:19:59.650 に答える