2017-10-21 100 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」。