2011-11-11 67 views
2

我有一個帶有多個複選框和textareas的表單。當一個複選框被選中時,相關的textarea會出現。這工作正常。

但是,如果進行了某個查詢,我有一個數據庫調用來獲取信息以用數據填充textareas。的HTML的一個例子是如下:

<li> 
    <input type="checkbox" id="changes-trigger" /> 
    <label for="changes-trigger">Changes</label> 
    <textarea id="changes" name="changes" rows="6" cols="40"><?php echo $report['changes']; ?></textarea> 
</li> 

如果數據被加載到textarea的,我想進行檢查的複選框和用於待顯示的文本區域。如果我定位的textarea的具體使用id,我能做到,因爲我想在頁面加載:

if($('#changes').val()) { 
    $('#changes-trigger').prop('checked','true'); 
    $('#changes').show(); 
} 

然而,正如我說的,我有這些的負荷,不想爲每個單獨的一個代碼。 不僅如我所願,它打破了我的外部.js文件的其餘部分。任何人都可以建議爲什麼以下不起作用?

if($('textarea').val()) { 
    $(this).siblings('input').prop('checked','true'); 
    $(this).show(); 
} 
+0

這是如何包裝你的代碼迴路長相具體數值? –

回答

2

我建議使用each通過所有textarea S IN這樣遍歷:

$('textarea').each(function() { 
    if($(this).val()) { 
     $(this).siblings('input').prop('checked','true'); 
     $(this).show(); 
    } 
}); 
+0

對,這是完全合理的,雖然每個人都說相同,但你首先到達那裏。太好了,謝謝。 –

2

$('textarea').val()將引用您的網頁上的所有 '文本區域' 元素,嘗試 -

$('textarea').each(function() { 
    if($(this).val()) { 
     $(this).siblings('input').prop('checked','true'); 
     $(this).show(); 
    } 
}) 

這應該循環瀏覽頁面上的所有文本框並將邏輯應用於每個文本框。

+0

輝煌,感謝您的回答 –

2

您期待this現在引用頁面上的一組textareas,因爲您在if中引用了它們,它不會這麼做 - 它不會在函數內部更改。

你可以做

$('div#abc textarea').each(function() { 
    if($(this).val()) { 
     $(this).siblings('input[type=checkbox]').prop('checked','true'); 
     $(this).show(); 
    } 
}); 

代替。我建議你只搜索給定的div或類似的textareas(這裏用id abc),只更新正確類型的輸入!

+0

對,明白了。無需擔心不同類型的輸入,它們將永遠不會作爲textareas的兄弟姐妹存在,但我明白你的觀點,謝謝。 –

2

this上下文指向window對象,除非它已被事件回調或使用.call.apply更改。

相反,使用這樣的:

var $textarea = $('textarea'); 
if($textarea.val()) { 
    $textarea.siblings('input').prop('checked','true'); 
    $textarea.show(); 
} 
+0

太好了,謝謝 –

2

使用​​3210選擇將返回所有的textarea的數組在頁面上。對此應用.val()只會返回DOM樹中第一個textarea的值。小提琴證明:http://jsfiddle.net/sc4vc/

您需要使用.each()方法獲取的每個textarea

$('textarea').each(function() { 
    if ($(this).val()) { 
     $(this).siblings('input').prop('checked','true'); 
     $(this).show(); 
    } 
} 
+0

感謝您的答案和小提琴 –

相關問題