2016-05-17 5 views
1

У меня есть форма, которая состоит из трех блоков face-book, twitter и pinterest. Я добавил условие, позволяющее подавать форму только при выборе одного из блоков. Для этого я сделал:Как указать несколько && и || условия в выражении if в javascript?

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

Теперь я хочу добавить еще одно условие, при котором она будет проверять внутри блока щебет, чтобы проверить, если текстовое поле имеет менее чем 140 символов. Для этого я добавил и состояние

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

Но это имеет некоторые недостатки, как при выборе facebook и tw_text имеет более чем 140 символов, то и форма получает представлены.

Пожалуйста, направляйте меня правильно, чтобы добавить условия, чтобы предотвратить отправку формы.

+0

Вы можете отредактировать вопрос и объяснить точную логику (но сохранить в неработающем коде). Не стесняйтесь использовать psuedo-код и множество круглых скобок, чтобы было ясно. – brianlmerritt

ответ

0

Я использовал этот способ для решения проблемы.

if($("#fb").prop("checked") || $("#tw").prop("checked") || $("#pin").prop("checked")) { 
    if ($("#tw").prop("checked")) { 
     if($('#tw_text').val().length <= 140) { 
      ...submit form... 
     } 
     else { 
      .... show error for twitter text length.... 
     } 
    } 
    else { 
     ...submit form... 
    } 
} 
else { 
    ... show error message to select minimum one of the options between fb,tw and pinterest ... 
} 
+0

@brianlmerritt Спасибо за беспокойство. Я решил проблему, используя этот метод. –

4

Вы должны круглые скобки, чтобы группировать их (precedence логического ИЛИ || меньше, чем логическое И &&):

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

Но если пользователь выбирает fb и tw, а символ твиттера более 140, то он также отправит форму. Я хочу предотвратить это. –

+0

, так что вы хотите только один (действительный) выбор? –

+0

Нет. Я хочу, чтобы пользователь выбирал минимум один из трех, и если он выбирает твиттер, у него должен быть текст в twitter менее 140. Если fb и twitter выбраны вместе, он также должен проверить отсутствие символов и предотвратить отправку, если условие получится ложный. –

0

Из того, что я понял из вашего описания является то, что только твиттер вам нужно обязательное условие для быть довольным. Просто использование скобок должно помочь вам здесь. Надеемся, что с помощью этой команды помогут: if ($("#fb").prop("checked") || ($("#tw").prop("checked") && $(#"tw_text").val().length <= 140) || $("#pin").prop("checked")) { ... ... }

+0

Но если пользователь выбирает fb и tw, а символ твиттера более 140, то он также отправит форму. Я хочу предотвратить это. –

Смежные вопросы