2016-05-17 5 views
1

Ich habe ein Formular, das drei Blöcke Gesichtsbuch, Twitter und Pinterest hat. Ich habe eine Bedingung hinzugefügt, um das Senden des Formulars nur zu ermöglichen, wenn einer der Blöcke ausgewählt ist. Dafür ich tat:So geben Sie mehrere && und || an Bedingungen in if-Anweisung in Javascript?

if ($("#fb").prop("checked") || $("#tw").prop("checked")|| 
    $("#pin").prop("checked")) { 
    ... 
    ... 
} 
if ($("#fb").prop("checked") || $("#tw").prop("checked")|| 
    $("#pin").prop("checked")) { 
    ... 
    ... 
} 

Jetzt will ich eine weitere Bedingung hinzu, wo es in dem Twitter-Block prüfen wird zu prüfen, ob das Textfeld weniger als 140 Zeichen. Dafür habe ich ein und Zustand

if ($("#fb").prop("checked") || $("#tw").prop("checked") && $(#"tw_text").val().length <= 140|| 
    $("#pin").prop("checked")) { 
    ... 
    ... 
} 

Das hat aber einige Fehler, wie wenn die Facebook ausgewählt und tw_text verfügt über mehr als 140 Zeichen dann auch das Formular abgeschickt wird.

Bitte führen Sie mich zum richtigen Weg, um Bedingungen hinzuzufügen, um zu verhindern, das Formular zu übermitteln.

+0

können Sie bitte die Frage bearbeiten und die genaue Logik erklären (aber behalten Sie im nicht funktionierenden Code). Fühlen Sie sich frei, Pseudo-Code und viele Klammern zu verwenden, um es zu verdeutlichen. – brianlmerritt

Antwort

0

Lösung: Ich habe diesen Weg, um das Problem zu lösen.

+0

@brianlmerritt Vielen Dank für die Sorge. Ich habe das Problem mit dieser Methode gelöst. –

4

Sie müssen Klammern gruppieren sie (die precedence logischer OR || kleiner als logische UND &&):

if ($("#fb").prop("checked") || 
    ($("#tw").prop("checked") && $(#"tw_text").val().length <= 140) || 
    $("#pin").prop("checked")) { 
... 
+0

Wenn aber der Benutzer fb und tw auswählt und kein Text des Twitter-Texts mehr als 140 ist, wird auch das Formular gesendet. Ich möchte das verhindern. –

+0

Sie wollen also nur eine (gültige) Auswahl? –

+0

Nein. Ich möchte Benutzer mindestens eins der drei auswählen und wenn er twitter wählt, sollte er Twitter-Text weniger als 140 haben. Wenn fb und twitter zusammen ausgewählt werden, sollte es auch für die Anzahl der Zeichen prüfen und verhindern, wenn Bedingung eintritt falsch. –

0

Von dem, was ich aus Ihrer Beschreibung verstehen ist, dass nur für Twitter müssen Sie eine obligatorische Bedingung Sei zufrieden. Einfach Klammern zu verwenden sollte Ihnen hier helfen. Hoffe, die folgenden hilft: if ($("#fb").prop("checked") || ($("#tw").prop("checked") && $(#"tw_text").val().length <= 140) || $("#pin").prop("checked")) { ... ... }

+0

Aber wenn Benutzer wählt fb und tw und keine der twitter Text Zeichen ist mehr als 140, dann wird es auch das Formular abschicken. Ich möchte das verhindern. –

Verwandte Themen