2013-06-06 28 views
0

使用jquery,我試圖選擇那些有星號相鄰的inputsjquery選擇輸入與相鄰的星號

HTML

<form name="checkout"> 
<table width="100%" border="0"> 
    <tr> 
    <td>First Name</td> 
    <td><input type="text" name="FirstName" value="" />*</td> 
    </tr> 
    <tr> 
    <td>Last Name</td> 
    <td><input type="text" name="LastName" value="" /></td> 
    </tr> 
</table> 
</form> 

jQuery的

var elems = $("form[name='checkout'] :input").filter(function(index) { 
       var str = $(this).parents('td').html() 
       return (str.indexOf("*")!=-1) 
      }).length; 

elems結果應該是1,但它不工作,即形式儘管有回報的處理程序,以便能假提交似乎沒有抓住錯誤細節。我究竟做錯了什麼?

回答

3
var elems = $("td:contains('*') input"); 

這是你所需要的投入要素選擇。 elems.length會給你1在這種情況下

+0

歡迎來到StackOverflow。謝謝! – greener

0

Ha Ha,

缺少onReady()。 使用這個,

$(function(){ 
var elems = $("form[name='checkout'] :input").filter(function(index) { 
      var str = $(this).parents('td').html() 
      return (str.indexOf("*")!=-1) 
     }).length; 

console.log(elems); 
}); 

應該這樣做。乾杯:)。

0

我建議你使用CSS:僞元素之後

<style> 
.mandatory:after{ 
content:"*"; 
} 
</style> 

<span class="mandatroy"> 
    <input type="text" name="FirstName" value=""> 
</span> 


<script> 
$("form[name='checkout'] .mandatory > :input") 
</script> 
0

它會更容易,如果你添加一個類到後,他們有一個星號的輸入:

<td><input type="text" name="FirstName" class="required" />*</td> 

然後你可以選擇他們的班級,並做你想做的任何事情。

$("input.required").length(); 
0

鑑於明確的要求:

$('input').filter(function() { 
    return (this.nextSibling && this.nextSibling.nodeValue.indexOf('*') > -1) || (this.previousSibling && this.previousSibling.nodeValue.indexOf('*') > -1); 
}).css('border-color','#f00'); 

JS Fiddle demo