2017-10-21 65 views
0

我无法获得一个基本的if语句在jquery $ .each循环内工作。我有一个json对象,我通过循环,如果在json对象中找到输入到文本框中的值,我返回一个标志,我设置为false。但由于某种原因,if语句没有执行。下面是代码:

var authorlist = [ 
 
    {"AUTHOR":"DONNA EDWARDS","COUNTRY":"USA","REGION":"MIDWEST"}, 
 
    {"AUTHOR":"EMERALD JONES","COUNTRY":"UK","REGION":"EU"}, 
 
    {"AUTHOR":"SHAKESPEARE","COUNTRY":"UK","REGION":"EU"}]; 
 

 
function checkName() { 
 
    var nameIsValid = true; 
 
    var nametocheck = $("#name").val(); 
 
    $.each(authorlist, function(index, val){ 
 
    //console.log(val.AUTHOR); 
 
    if(nametocheck == val.AUTHOR) { 
 
     //console.log(val.AUTHOR); 
 
     nameIsValid = false; 
 
     return false; 
 
    } 
 
    }); 
 
    return nameIsValid; 
 
} 
 

 
$("#btnCheck").on("click", function(){ 
 
    console.log("The name entered is valid: " + checkName()); 
 
});
<form class="form-horizontal" name="paymentInformation" id="paymentInformation" action="verifyOrder.cfm" method="post" role="form"> 
 
    <div class="form-group"> 
 
    <fieldset class="col-sm-12"> 
 

 
     <!-- Row 1 --> 
 
     <div class="row"> 
 
     <div class="col-sm-6"> 
 
      <label for="id2" class="col-6 col-form-label"> 
 
      Book Name 
 
      </label> 
 
      <input type="form-control" placeholder="Book Name" type="text" id="id2" name="id2" class="col-10"> 
 
      <button type="button" class="btn btn-primary" id="btnCheck">Check</button> 
 
     </div> 
 
    
 
     </div> 
 
</form> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

https://jsfiddle.net/wqnkz4v7/

+0

“你的名字是有效的”逻辑似乎是倒退的。你的意思是说,如果用户输入的名字是在列表中,那么它是无效的?或者换句话说呢? –

+0

@Leo Nix - 是的,但该命令在if语句中应该没有关系。这就是为什么你低估了我的问题吗?如果是这样,那肯定是最愚蠢的原因。如果没有,我的道歉。 –

+0

我还没有投下你的问题:-) –

回答

1

编辑以下

var nametocheck = $("#id2").val(); 

或使用以下

$("input[name='name']").val(); 
+0

男孩,我确定看起来像一个新手! :(谢谢!:) –

+0

我们都有一次看起来像一个新手! –

1

你需要解决的权限ID。

var nametocheck = $("#id2").val(); 
//     ^^^^ 
1

你的错误是在var nametocheck = $("#name").val();

根据html的选择符应该是“#id2”。