2014-10-08 2 views
0

Я пытаюсь вдавить падение, проверив, чтобы что-то, кроме первого варианта («Выбрать один»), пропущеноПочему первое сообщение «Не является» не работает?

Логика: Правда ли, что значение НЕ «выбрано»? Если да, верните true (отправьте форму). Я считаю, что логика требует от меня проверки, чтобы определить, является ли значение НЕ первым. Мой код кажется правильным, но я думаю, что я не делаю «!» оператора.

Я пробовал эти версии «Если вал не является строкой, но они не работали

if(val !== 'choose') 
if(val != 'choose') 

// Пример кода ниже

<form onsubmit="return validatedMenu()"> 
    <select id="dropDown"> 
     <option value="choose">Choose one...</option> 
     <option value="1">test1</option> 
     <option value="2">test2</option> 
     <option value="3">test3</option> 
    </select> 
    <input type="submit" value="select" /> 
</form> 
<div>message here: <span id="mySpan"></span></div> 

    function validatedMenu() { 
     var dd = document.getElementById("dropDown"); 
     var val = dd.options[dd.selectedIndex].value; 
     var txt = dd.options[dd.selectedIndex].text; 

     if(val != 'choose') { 
      document.getElementById("mySpan").innerHTML = "You must make a selection."; 
     } 
     else { 
      document.getElementById("mySpan").innerHTML = "Success! You chose " + txt; 
      return false; 
      } 
    return true; 
    } 
+0

Я считаю, что логика требует от меня проверить, является ли значение НЕ первым вариантом. Мой код кажется правильным, но я думаю, что я не делаю «!» оператора. – ryanjohnsond

+4

Это просто не имеет смысла ... Вы должны проверить, является ли это первым вариантом, чтобы предупредить, что «вы должны сделать выбор» ... Если это не первый, он уже сделал правильный выбор, не так ли? ? – LcSalazar

ответ

3

Вы просто логика переворачивается назад. Если val != 'choose', это означает, что пользователь сделал выбор. Однако в этом выражении if вы используете логику, когда нет. Вам просто нужно перевернуть содержимое вашего if/else:

function validatedMenu() { 
    var dd = document.getElementById("dropDown"); 
    var val = dd.options[dd.selectedIndex].value; 
    var txt = dd.options[dd.selectedIndex].text; 

    if(val != 'choose') { 
     document.getElementById("mySpan").innerHTML = "Success! You chose " + txt; 
     return true; 
    } 
    else { 
     document.getElementById("mySpan").innerHTML = "You must make a selection."; 
    } 
    return false; 
} 

Однако, если вы по какой-то причине хотели иметь условие успеха как условие else и отказа, как if, вам просто нужно отменить то, что вы оцениваете в if(), чтобы выбрать первый вариант приведет к тому, что это будет так:

+0

sphanley- Это не сработало, когда я попробовал. Желаемая логика: если пользователь выбирает первый вариант, верните false, с сообщением «Вы должны сделать выбор». В противном случае, Else, верните true, с сообщением «Успех ...» – ryanjohnsond

+0

Это то, что я сделал, отрезанный мной. Если пользователь выбрал первый вариант, то, если произойдет сбой, else будет запущен, и они ударят по возврату false. Если они выбрали что-либо, кроме первого, они будут вводить оператор if и возвращать true с успехом. –

+1

Тем не менее, я опубликовал второй способ исправить его, который оставляет сценарий сбоя в if. Любой должен делать то, о чем вы просите. –

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