2011-03-25 34 views
1

我試圖檢查輸入元素上是否存在屬性。我創建了一個hasAttr插件,如下所示,以檢查attr是否未定義且爲false。一切似乎寫得都正確,但我沒有得到任何迴應或錯誤。jQuery將輸入屬性傳遞給函數並檢查它是否存在

HTML

<form id="form"> 
    <div><input type="text" /></div> 
    <div class="selected"><input type="text" /></div> 
    <div><input type="text" /></div> 
</form> 

的jQuery插件hasAttr

$.fn.hasAttr = function(name) { 
    return this.attr(name) !== undefined && this.attr(name) !== false; 
}; 

傳遞ATTR ATTR如果存在則設定值命名功能ABC否則警報假

function formeditvalues(attr) { 
    if ($('#form').find('.selected input').hasAttr(attr)) { 
     $('#form'.find('.selected input').val('abc'); 
    } else { 
     alert('false'); 
    } 
} 

調用函數沒有迴應。

formeditvalues('type'); 

檢查的jsfiddle http://jsfiddle.net/KPczs/1/

+0

一些標籤有時也有隱含屬性,如果該屬性是不是在HTML明確(即''爲輸入type' ')。 http://jsfiddle.net/KPczs/4/(最後輸入應該返回'false'?) – Haochi 2011-03-25 03:20:18

+0

@haochi好點 – Hussein 2011-03-25 03:31:25

回答

1

有在控制檯的錯誤,你錯過了一個),在這裏:

$('#form'.find('.selected input').val('abc'); 
     ^

修復這:

$('#form').find('.selected input').val('abc'); 

... makes your fiddle work


順便說一句,false是一個有效的屬性,例如disabledreadonly是在DOM布爾屬性的示例,所以你!== false可能不是所期望的檢查。另外還有[attr](有-attribute`選擇),您可以用爲好,like this

$('#form .selected input['+attr+']').val('abc'); 
+0

謝謝。控制檯出於某種原因沒有響應。我不得不重新啓動fireFox來查看錯誤。確實我錯過了''''。我讚賞你發佈的其他指針。 – Hussein 2011-03-25 03:26:29

相關問題