使用的框架:cakePHP 2.x
在php文件中,接下来的两个输入字段将通过javascript / jQuery代码在HTML页面中克隆,具体取决于属性的数量(最大为6):
<?php echo $this->Form->input('Prop.0.bills', array('label' => false, 'class' => '', 'disabled' => false)); ?>
<?php echo $this->Form->input('Prop.0.no_bills', array('type' => 'checkbox', 'label' => false,'div' => false)); ?>
在相应的HTML页面中,如果有两个属性,则代码为:
<input id="Prop1Bills" class="" type="text" name="data[Prop][1][bills]" original-title="">
<input id="Prop1NoBills" class="" type="checkbox" value="1" name="data[Prop][1][no_bills]" original-title="">
<input id="Prop2Bills" class="" type="text" name="data[Prop][2][bills]" original-title="">
<input id="Prop2NoBills" class="" type="checkbox" value="1" name="data[Prop][2][no_bills]" original-title="">
我需要什么? 当复选框被选中时,我需要.js代码将禁用的属性(值= 0)添加到第一个输入文本中。 我已经尝试了两种方式(使用第二个php echo数组中的测试添加的“数据名称”:“名称” =>“ PropNoBills”),两者都是错误的(如果选中了复选框,则输入文本不正确) t的值= 0禁用):
/ *第一种方式* /
$(document).ready(function () {
for (var i = 0; i <= 6; i++) {
if ($('input[data-name="PropNoBills"]').is(':checked')){
$('#Prop'+i+'Bills').attr('disabled', true).val('0');
} else {
$('#Prop'+i+'Bills').attr('disabled', false);
}
} }); // end ready
/ *第二种方式* /
$('input[data-name="PropNoBills"]').each(function() {
for (var i = 0; i <= 6; i++) {
if ($(this).is(':checked')){
$('#Prop'+i+'Bills').attr('disabled', true).val('0');
} else {
$('#Prop'+i+'Bills').attr('disabled', false);
}
} });
我更喜欢使用ID #Prop ...,因此我尝试使用:
function check_bills(){
for (var i = 0; i <= 6; i++) {
if ($('#Prop[i]NoBills').is(':checked')){
$('#Prop'+i+'Bills').attr('disabled', true).val('0');
} else {
$('#Prop'+i+'Bills').attr('disabled', false);
}
} }
我认为问题与.js文件中的+ i + [i] {'i'代表属性的克隆编号}有关。 谢谢