2016-11-17 49 views
3

當我的形式內已經與名稱=「ID」的輸入端,所述支柱(「ID」)方法返回代替id作爲字符串輸入元件:jQuerys丙()方法返回錯誤ID

HTML

<form id="testform"> 
    <input name="id"> 
</form> 

JS

var $form = $('#testform'); 

var wrongId = $form.prop('id'); 
var correctId = $form.attr('id'); 

alert(wrongId); // alerts the html input element 
alert(correctId); // alerts the id testform 

任何人都可以給我講解一下?

我已經準備了一個小提琴: https://jsfiddle.net/zosu17se/

感謝和最美好的

回答

5

這是因爲你已經命名輸入id和投入,選擇和其他「表單元素」的名稱或ID作爲表單的屬性附加到父窗體以便於訪問,所以form.id是輸入,而不是元素ID。

命名輸入id或任何其他財產,你可能想訪問,並解決問題。造成這一

var form = window.test; // note that element ID's are also attached to the global scope 
 

 
form.id.value = 'test'; 
 
form.value.value = 'test more'; 
 
form.selectedIndex.value = '2';
<form id="test"> 
 
    <input name="id"> 
 
    <input name="value"> 
 
    
 
    <select id="selectedIndex"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
    </select> 
 
</form>

+0

或者其他財產的名稱奇怪的代碼

舉例,例如:https://jsfiddle.net/zosu17se/9/ –