2013-03-18 58 views
49

我下面舉個例子:jQuery的檢查<input>存在,並且有一個價值

<input type="text" class="input1" value="bla"/> 

有沒有一種方法,以檢查是否存在此元素,在一個聲明中具有價值? 或者,至少,什麼短則

if($('.input1').length > 0 && $('input1').val() != '') 

剛開用英里長的情況在這裏受挫。

+0

如果您多次使用相同類型的條件,可能會創建一個輔助函數。 – mirrormx 2013-03-18 16:14:14

+1

if($(selector).val())should be working。如果元素不存在,它將返回'undefined',如果它沒有長度,它將返回「」(它的計算結果爲false)。 – Benmj 2013-03-18 16:15:06

+0

@Benmj會'未定義'評估爲假?我認爲它不會。 – Dimskiy 2013-03-18 16:17:54

回答

100

的投入將不具有價值,如果它不存在。試試這個......

if($('.input1').val()) 
+0

我寫了一些小函數,但也使用了這個例子。 – Dimskiy 2013-03-18 18:09:09

+3

@Christian:input1不是上述答案中的html標記,而是一個類。 – 2014-09-22 03:26:05

+3

我不完全同意信任輸入元素的值屬性。 它有時可能是空的(裏面沒有數值),但仍然存在於範圍內。 所以最好的方法是依靠$('。input1').length> 0然後做任何處理。 – 2015-12-04 15:21:28

17

你可以這樣做:

if($('.input1').length && $('.input1').val().length) 

length評估爲false的條件下,當值0

+0

Downvote無評論?爲什麼? – 2013-03-18 16:15:57

+0

@MarkWalters:這裏沒有downvote,但它沒有比原來的更多的改進。 – 2013-03-18 16:17:02

+0

我會爲你效勞。 .length的添加是我的首選。 – 2013-09-14 19:48:43

12

你可以做這樣的事情:

jQuery.fn.existsWithValue = function() { 
    return this.length && this.val().length; 
} 

if ($(selector).existsWithValue()) { 
     // Do something 
} 
5

只是爲了這件事,我在jQuery代碼中對此進行了跟蹤。 .val()函數當前從attributes.js的第165行開始。下面是相關的部分,我的註解:

val: function(value) { 
    var hooks, ret, isFunction, 
     elem = this[0]; 

     /// NO ARGUMENTS, BECAUSE NOT SETTING VALUE 
    if (!arguments.length) { 

     /// IF NOT DEFINED, THIS BLOCK IS NOT ENTERED. HENCE 'UNDEFINED' 
     if (elem) { 
      hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; 

      if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) { 
       return ret; 
      } 

      ret = elem.value; 

      /// IF IS DEFINED, JQUERY WILL CHECK TYPE AND RETURN APPROPRIATE 'EMPTY' VALUE 
      return typeof ret === "string" ? 
       // handle most common string cases 
       ret.replace(rreturn, "") : 
       // handle cases where value is null/undef or number 
       ret == null ? "" : ret; 
     } 

     return; 
    } 

所以,你要麼得到undefined""null - 所有這些評估if語句爲假。

-1

我會這樣做:$('input[value]').something。這樣可以找到所有有價值的投入,並對它們進行操作。

相關問題