Überprüfen Sie, ob die Eingabe der Radio-ID ausgewählt ist, bevor das Formular gesendet wird

Lesezeit: 4 Minuten

Uberprufen Sie ob die Eingabe der Radio ID ausgewahlt ist bevor
Zach Smith

Ich arbeite mit WooCommerce auf WordPress. In der Kasse möchte ich prüfen, ob ein bestimmtes Optionsfeld ausgewählt ist, bevor der Benutzer absendet. Wenn eine bestimmte ID ausgewählt ist, führen Sie a aus window.alert zur Zeit. Ich habe das folgende Formular, das von WooCommerce bereitgestellt wird:

<ul id="shipping_method">
    <li>
        <input type="radio" name="shipping_method[0]" data-index="0" id="shipping_method_0_legacy_local_pickup" value="legacy_local_pickup" class="shipping_method">
        <label for="shipping_method_0_legacy_local_pickup">Local Pickup</label>
    </li>
    <li>
        <input type="radio" name="shipping_method[0]" data-index="0" id="shipping_method_0_distance_rate_shipping" value="distance_rate_shipping" class="shipping_method" checked="checked">
        <label for="shipping_method_0_distance_rate_shipping">Delivery from 536 S College Ave, Chicago, IL</label>                  
    </li>
</ul>

Zum Testen verwende ich bisher folgendes Skript:

<script type="text/javascript">
    if (document.getElementById('shipping_method_0_distance_rate_shipping').checked) {
        alert("Delivery checked!");
    }
</script>

Das Skript funktioniert hervorragend, wenn die Seite geladen wird, aber wenn ich das Optionsfeld deaktiviere und erneut auswähle, bevor die Seite gesendet wird, funktioniert das Skript nicht. Wenn ich in Echtzeit sehen kann, welche sie auswählen, würde das mein unmittelbares Problem lösen.

Ich schätze Ihre Zeit und Hilfe dabei.

Uberprufen Sie ob die Eingabe der Radio ID ausgewahlt ist bevor
mplungjan

So benachrichtigen Sie, wenn darauf geklickt wird:

window.onload = function () { // when page loads

 // To alert when clicking

  document.getElementById('shipping_method_0_distance_rate_shipping').onclick=function() {
    alert("Delivery checked!");
  }    

  // To test when submitting:

  document.getElementById('yourFormId').onsubmit=function() {
    if (!document.getElementById('shipping_method_0_distance_rate_shipping').checked) {          
      alert("Delivery not checked!");
      return false; //  cancel submit
    }    
  }    
}

So fragen Sie, ob sie auf die richtige Option geklickt haben:

window.onload = function () { // when page loads

  document.getElementById('yourFormId').onsubmit=function() {
    return confirm(document.getElementById('shipping_method_0_distance_rate_shipping').checked ? 
      "Local Pickup?" : 
      "Delivery from 536 S College Ave, Chicago, IL?");
  }    
}

  • das funktioniert einwandfrei. vielen dank für deine zeit und erfahrung.

    – Zach Smith

    19. Januar 17 um 7:47 Uhr

  • scheint, wenn ich teste, wenn ich das Optionsfeld deaktiviere und dann erneut auswähle, wird das Skript nicht ausgelöst. die Gedanken?

    – Zach Smith

    19. Januar 17 um 7:52 Uhr

  • Wenn Sie beim Klicken warnen möchten, benötigen Sie BEIDE Skripte – siehe Update

    – mplungjan

    19. Januar 17 um 7:54 Uhr

  • Ich möchte nicht auf der Seite senden testen. Ich möchte nur testen, ob der Benutzer die Radio-ID vor dem Senden auswählt. Das Konzept hier ist, dass ich den Benutzer warnen muss, wenn er eine bestimmte Versandoption auswählt, bevor er sie absendet, um Probleme zu reduzieren, dass Benutzer die falsche Versandmethode auswählen, die sich auf bestimmte Kriterien bezieht, die nichts mit diesem Thema zu tun haben.

    – Zach Smith

    19. Januar 17 um 7:55 Uhr

  • Ich habe eine Frage. Ich habe diesen Code in die Produktion verschoben und verwende dieses Skript jetzt in einem anderen Projekt für eine andere Lösung. sehr praktisch. neugierig, wie ich eine if/else-Situation erstellen kann (ich bin PHP-Entwickler, also nicht zu sehr an js gewöhnt), in der eine Tab-ID standardmäßig verwendet wird. Nehmen wir an, wenn die Seite geladen wird und keine Registerkarten-ID ausgewählt ist, wie könnte ich dies auslösen? Wenn dies keinen Sinn macht, kann ich eine neue Frage mit dem betreffenden Code schreiben.

    – Zach Smith

    19. Januar 17 um 11:10 Uhr

Ihr Javascript wird nur einmal ausgeführt. Sie müssen den Wert des aktivierten Radios jedes Mal überprüfen, wenn Sie ein Optionsfeld aktivieren (naja, das ist ein seltsamer Ausdruck).

Siehe die Antwort von @Afnan Ahmad für ein funktionierendes Beispiel.

  • Dies ist ein Kommentar, keine Antwort, und es reicht aus, das Senden zu überprüfen

    – mplungjan

    19. Januar 17 um 7:47 Uhr


  • Ich dachte darüber nach, Code hinzuzufügen, aber dann war jemand schneller. Und dies ist eine mögliche Lösung, obwohl dies kein Code ist.

    – elementnull23

    19. Januar 17 um 7:49 Uhr

Uberprufen Sie ob die Eingabe der Radio ID ausgewahlt ist bevor
Afnan Ahmad

Rufen Sie diese Funktion vor dem Absenden auf. Wenn Sie die Formularübermittlung stoppen möchten, fügen Sie Ihr Formular hinzu onsubmit

<form name="yourform" onsubmit="return validate();"> 

function validate() {
        if (document.getElementById('shipping_method_0_distance_rate_shipping').checked) {
            alert("checked submit form");
            return true;
        } else {
            alert("Unchecked form will not be submitted");
            return false;
        }
    }
<input id="shipping_method_0_distance_rate_shipping" name="shipping_method[0]" type="checkbox" onclick="validate()" />

  • Dies wird die Einreichung überhaupt nicht stoppen

    – mplungjan

    19. Januar 17 um 7:46 Uhr

  • Lassen Sie mich meine Antwort ändern.

    – Afnan Ahmad

    19. Januar 17 um 7:47 Uhr

  • Jetzt funktioniert es genauso wie meine Antwort, aber weniger elegant (gleichmäßige Inline-Behandlung)

    – mplungjan

    19. Januar 17 um 7:52 Uhr

  • Da dieses Formular von WooCommerce stammt, kann ich das Formular nicht bearbeiten und den Onclick-Handler hinzufügen. Deshalb bin ich gezwungen, über die CSS-ID zu zielen

    – Zach Smith

    19. Januar 17 um 7:52 Uhr

  • Ein noch besserer Grund, keine Inline-Handler zu verwenden

    – mplungjan

    19. Januar 17 um 7:53 Uhr

Sie können Ihren Radiobuttons eine Klasse zuweisen und anhand dessen den angeklickten Wert erhalten.

Beispielsweise

HTML

<input type="radio" name="option" value="o1" class="test">option1</input>
<input type="radio" name="option" value="o2" class="test">option2</input

JS

$(document).on('click','.test',function(event){
    var selectedOption = $(this).val()
  console.log(selectedOption)
});

Sie können die Geige als Referenz sehen
https://jsfiddle.net/7okvyxx3/

.

821700cookie-checkÜberprüfen Sie, ob die Eingabe der Radio-ID ausgewählt ist, bevor das Formular gesendet wird

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy