2016-03-20 227 views
1

我沒有從名稱Attribute中獲取值。我做錯了什麼?未獲取名稱屬性

例如

$(function() { 
    $("#orderForm").submit(function(e){ 
     e.preventDefault(); 
     var statusName = $(this).attr('input[name="name"]').val(); 
     var statusDesc = $(this).attr('input[name="description"]').val(); 
     alert(statusName); 
    }); 
}); 

HTML代碼:

<form id='orderForm'> 
    <input type="text" name="name"> 
    <textarea name="description"></textarea> 
<button type="Submit">Add</button> 
</form> 
+0

'attr'需要一個屬性名作爲參數,而不是一個選擇,因爲據我知道。 – Xufox

回答

4

您正在搜索attribute equals selector

$("#orderForm").submit(function(e){ 
    e.preventDefault(); 
    var statusName = $('input[name="name"]', this).val(); 
    var statusDesc = $('textarea[name="description"]', this).val(); 
    alert(statusName); 
}); 

在這裏,我已經使用$("selector", context)版本,所以元素相匹配的選擇器將在上下文中搜索,而不是從中找出。並且它非常類似於$(context).find("selector")

+0

謝謝。這意味着輸入將在'#orderForm'之外被搜索。 –

+0

出於興趣,爲什麼使用'$('input [name =「name」]',this).val()'而不是'$('input [ name =「name」]')。val()' –

+0

@DarrenSweeney你能看看我的答案。我正在輸入它。 :) –

0

jQuery attr函數獲取屬性的值,而不是文本輸入的值。

您應該使用children()獲取orderForm模塊的用戶輸入值。我準備了正確的代碼Js Bin

0

試試這個,

$(function() { 
    $("#orderForm").submit(function(e) { 
    e.preventDefault(); 
    var statusName = $(this).find('input[name="name"]').val(); 
    var statusDesc = $(this).find('*[name="description"]').val(); 
// or var statusDesc = $(this).find('textarea[name="description"]').val(); 
    alert(statusDesc); 
    }); 
}); 

我會建議你給ID對每個領域,而處理表單