2015-06-17 2 views
0

У меня есть поле, которое имеет следующиеJavascript подстановочные в IF Функция

United Kingdom EEA 
France EEA 
India Non EEA 
China Non EEA 

варианты Как я могу сделать if заявление, которое проверяет, содержит ли поле EEA или Non EEA. Я использовал == в моем примере кода, который, как я знаю, даже не закрыт, я просто хотел, чтобы это было ясно.

Насколько мне известно, я не могу использовать substring потому что length всегда будет отличаться в зависимости от страны и основной подстановочные будет по-прежнему тянуть обратно результаты для EEA и Non EEA.

function DisplayCorrectSections() { 
    var SectionSelection = GetFieldValue("Nationality"); 

     if (SectionSelection == "EEA") { 
      EnableRtwDocs(); 
      DisableVisaInformation(); 
      DisableValidVisaPanel(); 

     } 

     if (SectionSelection == "Non EEA") { 
      DisableRtwDocs(); 
      EnableVisaInformation(); 
      EnableValidVisaPanel(); 
     } 
} 
+0

Добро пожаловать в StackOverflow. Обратите внимание на предварительный просмотр вашего вопроса в текстовом поле, в котором вы пишете вопрос. Он покажет вам, правильно ли отформатирован ваш вопрос или нет (то есть, как легко другим людям читать/понимать) – freefaller

ответ

4

Вы можете использовать indexOf, но вы должны проверить Non EEA во-первых, в противном случае он будет найти EEA в Non EEA строк тоже:

if (SectionSelection.indexOf("Non EEA") > -1) { 
    //contains "Non EEA" 
} else if (SectionSelection.indexOf("EEA") > -1) { 
    //contains "EEA" 
} else { 
    //contains neither 
} 
2

Принимая excellent answer от @James, вы также можете сделать это используя регулярные выражения, которые также будут проверяться, чтобы текст находился в конце значения

var matches = SectionSelection.match(/(non)?eea$/i); 
if (matches != null) { 
    if (matches[1] != "") { 
    //contains "Non EEA" 
    } else { 
    //contains "EEA" 
    } 
} else { 
    //contains neither 
} 

Разбивка согласования, как это ...

  • (non)? обнаруживает ли буквы non там или нет
  • eea совпадает с письмами непосредственно
  • $ соответствует концу линии

Если есть non непосредственно перед eea, тогда match[1] будет содержать non.

i в конце означает, что он не чувствителен к регистру, поэтому он будет соответствовать eea, EEA, EEa и т.д.

+0

+1 за то, что я зашел и проверьте, содержались ли в каких-либо странах мира «EEA», которые нарушили бы мой код :) ([согласно этому списку, они этого не делают!] (http://www.nationsonline.org/oneworld/countries_of_the_world.htm)) –

+2

Хе-хе ... лучше быть в безопасности, чем жалеть @ Джеймс :) Хотя, как кто-то гораздо более мудрый, чем я, однажды сказал: «Если вы сделаете что-то идиотское доказательство, они просто сделают лучше идиотов» – freefaller

+0

Спасибо, господа, очень ценим! – CR7

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