2015-01-01 125 views
0

所以基本上我試圖創建一個更互動的日期選擇器。我是這樣做的,首先允許用戶輸入他們的名字。一旦他們提交,現在應該說...你好「用戶的名字」。無法檢索用戶輸入

但由於某種原因,我使用的if else語句不起作用。我查看了我的代碼,它看起來是正確的,但用戶輸入不會打印出來。它還應該檢查輸入是否是字符串,它會繼續。如果它只是一個字符串,就像一個數字一樣,它會輸出到屏幕上......「你必須告訴我們你的名字繼續前進!」。如何對用戶輸入的任何內容使用if else語句?有人可以看看我的代碼並幫助我嗎?我已經四處尋找,並沒有發現沿這些線路。也許這是重複的,或者我完全錯誤地解決了這個問題,我只是不確定。感謝您的幫助。爲使這一點更好的建議也將受到高度讚賞! :)

的HTML:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Going On Vacation!</title> 
    <link type="text/css" rel="stylesheet" href="stylesheet.css"/> 
</head> 
<body> 

    <h1>Heading Somewhere?</h1> 
    <div id="main"> 
    <h2>What is your name?</h2> 
     <input id="name" type= "text" placeholder=" Tell us!"> 

     <button id ="submit">Submit!</button> 
    </div> 

     <p id="user"></p> 
     <p id="when"></p> 
     <input id="date" placeholder="Choose your departure!"> 
     <p id="error1"></p> 
     <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script> 
    <script type="text/javascript" src="script.js"></script> 
</body> 
</html> 

的JavaScript:

$('#date').hide(); 

function userName(){ 
var user_name = $('#name').val(); 
$('#submit').click(function(){ 
if(typeof user_name === 'string'){ 
    $('#main').hide('slow'); 
     document.getElementById("user").innerHTML = "Hello " + user_name + "!"; 
     $('#user').css("margin-left", "641px"); 
     $('#when').css("margin-left", "598px"); 
     document.getElementById("when").innerHTML = "When are you leaving?"; 
     $('#date').show(); 
     $('#date').datepicker(); 
    } else { 
     document.getElementById("error1").innerHTML = "You must tell us your name to move on!"; 
    } 
    }); 
}; 


$(document).ready(userName); 
+1

什麼問題? – FrEaKmAn

+0

@FrEaKmAn我如何使用if語句來處理用戶輸入的任何內容? –

回答

0

,因爲你是用戶在填寫前閱讀的用戶名外地它不工作!

var user_name = $('#name').val(); 

該行需要INSIDE提交方法。

其次,檢查類型沒有意義。你想要檢查長度。

$('#submit').click(function(){ 
    var user_name = $.trim($('#name').val()); 
    if(user_name.length>0){ 
+0

工作正常!謝謝!但是,即使我使用if(typeof user_name ==='string')和else語句,用戶仍然可以繼續輸入數字,爲什麼? –

+0

因爲它是一個字符串....「3」是一個字符串...這不是一個數字。 val()給出一個字符串,它不會將輸入轉換爲該類型。 – epascarello

+0

哦,好吧我明白了,我沒在想,非常感謝你! –

0

user_name超出範圍。只是移動用戶聲明VAR到內提交事件:

function userName(){ 
    $('#submit').click(function(){ 
     var user_name = $('#name').val(); 
    if(typeof user_name === 'string'){ 
     $('#main').hide('slow'); 
      document.getElementById("user").innerHTML = "Hello " + user_name + "!"; 
      $('#user').css("margin-left", "641px"); 
      $('#when').css("margin-left", "598px"); 
      document.getElementById("when").innerHTML = "When are you leaving?"; 
      $('#date').show(); 
      $('#date').datepicker(); 
     } else { 
      document.getElementById("error1").innerHTML = "You must tell us your name to move on!"; 
     } 
     }); 
    }; 

,如果你不想jQuery的每次用戶點擊提交時間尋找在DOM對象。您可以在範圍外找到該對象,但必須在提交事件中檢索該值。例如:

... 
var userObj = $('#name'); 
$('#submit').click(function(){ 
      var user_name = userObj.val(); 
... 
+0

因爲jQuery val()將始終返回一個字符串。你應該用你自己的方式來檢查用戶輸入的號碼。 – nanndoj

+0

非常感謝! –