2014-05-22 41 views
0
var name = $("input[#name]").value; 
var email = $("input[#email]").value; 
var msg = $("input[#msg]").value; 

var nameLength = name.length; 
var emailLength = email.length; 
var msgLength = msg.length; 

正如您所看到的,我所要做的就是獲取#email字段值的長度。它適用於其他字段,但不適用於電子郵件字段。它給「TypeError:」未定義「不是一個對象」。JS:「TypeError:'undefined'is not an object」

任何原因爲什麼?

我在Safari和谷歌瀏覽器都試過,兩者都給出了同樣的錯誤。

的HTML:

<div class="form-group"> 
    <label class="col-md-4 control-label" for="email">Email</label> 
    <div class="col-md-5"> 
    <input id="email" name="email" type="text" placeholder="Enter your email address 
    here" class="form-control input-md" required=""> 
    </div> 
</div> 
+5

'.value'不是jQuery對象的有效屬性。您正在尋找'.val()':http://api.jquery.com/val/。請參閱[在輸入文本框中獲取值](http://stackoverflow.com/q/4088467/218196)。 –

+0

請向我們展示您嘗試定位的HTML,以便我們可以告知您的選擇器是否正確? – jfriend00

回答

2

您正在嘗試一個jQuery對象上使用DOM屬性。如果你有一個jQuery對象,那麼你必須使用jQuery方法.val()而不是DOM屬性.value或者你必須進入jQuery對象才能獲得DOM對象,然後你可以使用DOM屬性。

我建議你改變它使用jQuery的方法所獲得的價值:

var name = $("input[#name]").val(); 
var email = $("input[#email]").val(); 
var msg = $("input[#msg]").val(); 

或者,爲了便於說明,這也將工作(得到的DOM對象了jQuery對象和使用.value):

var name = $("input[#name]")[0].value; 
var email = $("input[#email]")[0].value; 
var msg = $("input[#msg]")[0].value; 

根據您添加到您的問題HTML,你需要修復你的選擇了。要定位​​,您只需使用$("#xxx")。不需要選擇器的其他部分,因爲在整個文檔中ID必須是唯一的。所以,如果所有的HTML都像你在問題中顯示的電子郵件部分一樣,那麼你可以使用這個:

var name = $("#name").val(); 
var email = $("#email").val(); 
var msg = $("#msg").val(); 
+0

然而,修正了這個問題 - 它導致了我的代碼中的另一個問題 - 給了我另一個變量的錯誤。 'var emailStructureAtPos = email.indexOf(「@」);' – user3666951

+0

@ user3666951 - 您可能會在代碼中再犯一些其他錯誤。沒有看到那些代碼,我們無能爲力。 – jfriend00

+0

@ user3666951 - 查看調試器以查看當時的「email」。也許它已經超出了範圍? – jfriend00

相關問題