POSTing Unbestimmte Checkbox Wert

0
23

Es gibt eine solche Sache wie ein intermediate-checkbox-Wert. Es ist eine checkbox (<input type=”checkbox”>) , nicht geprüft. Noch ist es nicht aktiviert. Es ist intermediate.

Wir können sogar wählen Sie ein Kontrollkästchen in diesem Staat und style es mit CSS!

Einige interessante Punkte aber:

  1. Es ist nur möglich, via JavaScript. Es gibt keine HTML-Attribut oder Wert.
  2. Es spielt keine POST (oder GET oder was auch immer) oder einen Wert haben. Es ist wie deaktiviert.

So, sagen Sie, hatte eine form wie diese:

<form action=”” method=”POST” id=”Formular”>

<input name=”name” type=”text” value=”Chris” />

<input name=”vegetarisch” type=”checkbox” class=”Gemüse”>

<input type=”submit” value=”Abschicken”>

</form>

Und, aus welchem Grund auch immer, machen Sie diese checkbox unbestimmt:

lassen veg = document.querySelector(“.veg”);
veg.unbestimmt = true;

Wenn Sie serialisieren, dass form-und schauen Sie, was wird die POST, die du bekommen wirst “name= “Chris”. Kein Wert für die checkbox. Umgekehrt hatte Sie überprüft die checkbox in der HTML-und nicht-touch in JavaScript, Sie würde get “name=Chris&vegetarisch=on”.

Offenbar ist dies durch das design. Checkboxen werden soll (boolean), und der Zwischenwert ist nur eine ästhetische Sache, die zeigen soll, dass visual “Kind” – Checkboxen sind in einem mischzustand (einige aktiviert, andere nicht). Das ist in Ordnung. Nicht ändern können Sie jetzt ohne ernsthaften Bruch von websites.

Aber sagen Sie wirklich wissen müssen, um auf dem server ist eine checkbox ist in diesem Zwischenzustand. Die einzige Möglichkeit, die mir einfällt, ist, einen Freund haben, der verborgene Eingang an, den Sie synchronisieren.

<input name=”vegetarisch” type=”checkbox” class=”Gemüse”>
<input name=”Vegetarische-Wert” type=”hidden” class=”veg-Wert”>
lassen veg = document.querySelector(“.veg”);
lassen Sie veg_value = document.querySelector(“.veg-Wert”);
veg.unbestimmt = true;
veg_value.value = “unbestimmt”;

Ich habe den Zwischenwert von einem Eingang, und ich habe einen weiteren versteckten Eingang auf den Wert “unbestimmt”, die ich POSTEN kann. Serialisiert heißt, es sieht aus wie “name=Chris&vegetarisch-Wert=unbestimmt”. Gut genug ist.

Finden Sie den Stift, Können Sie buchen einen Zwischenwert? von Chris Coyier (@chriscoyier) auf CodePen.