我正在尝试使用jQuery-ajax和PHP动态生成表单。 对于我从ajax请求获得的输入,我使用live / livequery附加了一个jQ处理程序。当我输入一个通过ajax的复选框类型输入时,问题就出现了,另一个输入类型=带有2个选项的无线电。当我选择其中一个无线电选项时,它不会向服务器发送正确的父ID,而是发送复选框ID,从而返回相同的输入无线电设备。
jQuery代码(包含在文档中):
$(function(){
$('.input_camp :input').live('change',function(){
$camp = $(this);
type = $camp.get(0).tagName;
referinta = '';
switch(type){
case 'SELECT':
referinta = $(this).find("option:selected").val();
break;
case 'INPUT':
type2 = $camp.attr('type');
if(type2 == 'radio'){
referinta = $(this+":checked").val();
}else if(type2 == 'checkbox'){
var allVals = [];
$(this+':checked').each(function(){
allVals.push($(this).val());
});
referinta = allVals;
}
break;
}
$.ajax({
type: "POST",
url: "ajax.php?actiune=dependente",
data: "referinta="+referinta,
success: function(response){
$camp.parent('div.input_camp').next('div.dependente').html(response);
}
});
});
});
这是表单的起始代码:
<div class="camp">
<div class="label_camp">
<label for="camp26">judet: </label>
</div>
<div class="input_camp">
<input type="checkbox" class="radio " id="camp3" value="12" name="camp3">
<label for="camp3">j.1</label><br>
<input type="checkbox" class="radio " id="camp3" value="13" name="camp3" checked="checked">
<label for="camp3">j.2</label><br>
</div>
<div style="" class="dependente"></div>
</div>
正如我所说,在检查第二个复选框后,ajax在div.dependente标记内返回以下代码:
ajax请求:“ajax.php?referinta = 13”。
ajax回复:
<div class="camp">
<div class="label_camp">
<label for="camp27">localitate: </label>
</div>
<div class="input_camp">
<input type="radio" class="radio " id="camp4" value="16" name="camp4">
<label for="camp4">L.2.1</label>
<input type="radio" class="radio " id="camp4" value="17" name="camp4" checked="checked">
<label for="camp4">L.2.2</label>
<input type="radio" class="radio " id="camp4" value="18" name="camp4">
<label for="camp4">L.2.3</label>
</div>
<div style="" class="dependente"></div>
</div>
到目前为止,这么好。接下来,我需要选择一个可用的无线电。无论选择何种输入,ajax请求都与之前相同,因此响应相同。