我有一個窗體,我有一個按鈕,當你點擊它時會添加一組表單域。其中一個表單域是一個下拉菜單,我有一個功能,當從下拉菜單中選擇某個選項時,它將填充另一個表單域。到目前爲止,它適用於頁面第一次加載時顯示的原始表單字段集合,但不適用於添加的一組表單字段。我如何使它在兩者上都能工作?下面是我的javascript:如何讓我的Onchange函數不止一次地工作?
<script type='text/javascript' src='http://code.jquery.com/jquery-1.5.2.js'>
</script><script type='text/javascript'>
//<![CDATA[
$(function() {
$('#add').click(function() {
var p = $(this).closest('p');
$(p).before('<p> <b>Quantity & Description:<\/b><br><textarea name="QuantityAndDescription" rows="10" cols="60"><\/textarea><br><b>Fabric Source:<\/b> <select name="FabricSource" onchange="changevalue(this.value)"><option value="">Select Fabric Source<\/option><option value="JEC">JEC Fabric<\/option><option value="Other">Other Fabric<\/option></select><br><b>Style# & Name:<\/b> <input type="text" name="Style#andName"><br><b>Fabric Width:<\/b> <input type="text" name="FabricWidth"><br><b>Repeat Information:<\/b> <input type="text" name="RepeatInfo" size="60"><input type="hidden" name="COM Required" /> <\/p><br>');
return false;
});
});
function changevalue(val) {
if (val == "JEC") document.comform.RepeatInfo.value = "Per JEC Pattern";
}
//]]>
</script>
編輯:
我用它來工作: function changevalue(val) { if(val=="JEC") $("form#comform [name='RepeatInfo']").val("Per JEC Standard"); }
什麼,而不是我以前。但現在的問題是,當您選擇觸發選項時,所有「RepeatInfo」表單字段將填充「Per JEC Standard」,而不僅僅是與觸發選擇相同的一組表單字段中的一個。我怎樣才能讓這個函數爲添加的表單域設置工作,但沒有一個單獨的選擇更改填充每個集合中的所有「RepeatInfo」表單域?
她沒有使用jQuery來執行事件處理,而是在她添加的HTML中內聯。 – Matt 2011-06-09 17:58:02
這並不意味着她不能使用jQuert,是的,她將不得不使用live()來添加新元素?因此我不認爲給答案給出否定的理由。 – kwicher 2011-06-10 00:32:52
從理論上講,這也是可行的,但只是關於某些語法的說明:第一行中的':select'應該用引號括起來,而第二行中的'this'應該用jQuery來包裝,像'$ (本)'。雖然,可能你不想在頁面上選擇所有的選擇框,所以使用ID可能會更好。 – Funka 2011-06-10 00:51:31