2014-03-04 47 views
1

我有一個簡單的帳號和密碼錶單。我可以通過函數將表單提交到序列化表單並將其發送到Web API控制器,並且在我創建的小型模型中接收帳戶號和密碼作爲屬性。所以這很好。但我想訪問用戶在頁面上輸入的數字,但我無法弄清楚如何去做 - 我嘗試使用var accountNo = $('#account')。val(),但accountNo是未定義的。jQuery:如果value屬性未定義,如何在控件中獲取文本?

我發現的所有例子都在HTML中設置了'value'屬性,使用.val('someValue')硬編碼或設置。但它的作用是讓用戶輸入文本,然後序列化表單,並將值屬性留空。那麼如何獲取用戶輸入的文本?

我穿上的jsfiddle樣本:http://jsfiddle.net/xZVzC/1/

<input name="account" type="text" placeholder="Enter Account Number"> 

$(function() { 
    var accountNo = $('#account').val(); 
    console.log('Account: ' + accountNo); 
}); 

回答

1

你選擇是錯誤的

改變你的HTML有id=account與您使用# id-selector$('#account').val();但沒有您的HTML中的ID屬性。

<input id="account" name="account" type="text" placeholder="Enter Account Number"> 

Fiddle Demo


或者

你的選擇更改爲

var accountNo = $('input[name="account"]').val(); 

Attribute Equals Selector [name="value"]

0

你不必在該領域中的ID,使用屬性選擇:

var accountNo = $('input:text[name=account]').val(); 
1

Ypu're目前缺少你輸入的id所以你需要通過名稱來選擇您的輸入:中

var accountNo = $('input[name="account"]').val(); 

代替:

var accountNo = $('#account').val(); 

或添加id屬性你的輸入:

<input id= "account" name="account" type="text" placeholder="Enter Account Number"> 

您也可以使用change()事件跟蹤,當你輸入值發生了變化:

$('input[name="account"]').change(function() { 
    var accountNo = $(this).val(); 
    console.log('Account: ' + accountNo); 
}); 

Updated Fiddle

或使用keyup()事件,當用戶完成輸入你裏面輸入任何字符:

$('input[name="account"]').keyup(function() { 
    var accountNo = $(this).val(); 
    console.log('Account: ' + accountNo); 
}); 

Fiddle Demo

+1

有趣的是change()和keyup()事件。很明顯,我不是jQuery專家,這很有幫助。我正在使用Web API來關注Microsoft網站中的示例,並且輸入控件沒有id字段,只是名稱,而且它自動工作。回想起來,這應該是顯而易見的! – Pete

+0

很高興你學到一些新的兄弟:) – Felix

相關問題