当单击类.editaRunses
的span时,触发对php文件的ajax调用,php文件返回json whit数据,接收到的代码尝试将值放入每个输入中,除复选框外,其他所有方法都起作用,点火时间得到正确的值(我测试了每个行并看到数据是正确的),因此问题可能出在removeAttr上,代码一次运行良好,而在此之前运行不好。
$(document.body).on('click', '.editaRunses' ,function(){
var id = $(this).data('id');
$.ajax({
type: "POST",
url: "acciones.php?accion=recuperaRunses",
data: {recuperaFormulario : id},
dataType : 'json',
success: function(response) {
$('#modificaRunses form').find('input').eq(0).val(response.Rope);
$('#modificaRunses form').find('input').eq(1).val(response.URL);
$('#modificaRunses form').find('textarea').eq(0).val(response.Proceso);
$('#modificaRunses form').find('textarea').eq(1).val(response.Observaciones);
$('#modificaRunses form').find('input').eq(2).val(response.Hora);
var cont = 3;
$.each(response.Dias,function(ind,elem){
var sele = $('#modificaRunses form').find('input').eq(cont);
if (elem === "si"){
$(sele).attr('checked', 'checked');
}
else{
$(sele).removeAttr('checked', 'checked');
}
cont++;
});
}
});
});
HTML代码:
<div class="modal fade" id="modificaRunses" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Crea Departamento</h4>
</div>
<div class="modal-body">
<form role="form" action="" method="post">
<h3 class="text-center">Añade registro a la Runshet</h3>
<div class="form-group">
<label>Rope</label>
<input type="text" class="form-control" name="rope"></input>
</div>
<div class="form-group">
<label>URL Rope</label>
<input type="text" class="form-control" name="url"></input>
</div>
<div class="form-group">
<label>Proceso</label>
<textarea class="form-control" name="proceso"></textarea>
</div>
<div class="form-group">
<label>Observaciones</label>
<textarea class="form-control" name="observaciones"></textarea>
</div>
<div class="form-group">
<label>Hora (pon la hora con el formato 13:13)</label>
<input type="text" class="form-control" name="hora"></input>
</div>
<div class="form-group">
<label>Runshet donde ira (puedes seleccionar más de una)</label>
<label class="checkbox-inline">
<input type="checkbox" value="Lunes" name="edicion[]" >Lunes - Jueves
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Viernes" name="edicion[]">Viernes
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Sabado" name="edicion[]">Sábado
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Domingo" name="edicion[]">Domingo
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Local" name="edicion[]">Festivo Local
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Nacional" name="edicion[]">Festivo Nacional
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Especial" name="edicion[]">Festivo Especial
</label>
</div>
<div class="form-group text-center">
<button type="button" class="btn btn-success accion" data-accion="modificaRunses">Crear</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Volver</button>
</div>
</form>
</div>
</div>
</div>
</div>
PHP工作正常并返回正确的值,但我向您展示
if($_GET["accion"] == "recuperaRunses"){
$dias = Array('Lunes','Viernes','Sabado','Domingo','Local','Nacional','Especial');
$datos_json = $otro = array();
$id = $_POST['recuperaFormulario'];
$sql = "SELECT * FROM runses WHERE Id = $id";
$consulta = $db->consulta($sql);
while ($row = mysqli_fetch_array($consulta)) {
$datos_json = array('Rope' => $row['Rope'],'URL' => $row['URL'],'Proceso' => $row['Proceso'], 'Observaciones' => $row['Observaciones'] ,'Hora' => $row['Hora'],'Id' => $row['Id'] );
$otro[$dias[$i]] = $row[$dias[$i]];
}
}
$datos_json['Dias'] = $otro;
echo json_encode($datos_json);
}
最佳答案
如how do i check uncheck a checkbox input or radio button/中所述,您需要使用jQuery prop:
我从您的代码中创建了一个简短的代码段,因此,如果您尝试使用通过attr / removeAttr设置/取消设置的按钮,则会遇到麻烦。
如果使用道具,您将永远不会失败。
片段:
$(function () {
$('#setChecked').on('click', function(e) {
$(':checkbox').attr('checked', 'checked');
})
$('#unSetChecked').on('click', function(e) {
$(':checkbox').removeAttr('checked');
})
$('#newSetChecked').on('click', function(e) {
$(':checkbox').prop('checked', true);
})
$('#newUnSetChecked').on('click', function(e) {
$(':checkbox').prop('checked', false);
})
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<button id="setChecked">Set Checked</button>
<button id="unSetChecked">UnSet Checked</button>
<button id="newSetChecked">USE PROP INSTEAD Set Checked</button>
<button id="newUnSetChecked">USE PROP INSTEAD UnSet Checked</button>
<div class="modal fade" id="modificaRunses" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<form role="form" action="" method="post">
<div class="form-group">
<label>Runshet donde ira (puedes seleccionar más de una)</label>
<label class="checkbox-inline">
<input type="checkbox" value="Lunes" name="edicion[]" >Lunes - Jueves
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Viernes" name="edicion[]">Viernes
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Sabado" name="edicion[]">Sábado
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Domingo" name="edicion[]">Domingo
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Local" name="edicion[]">Festivo Local
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Nacional" name="edicion[]">Festivo Nacional
</label>
<label class="checkbox-inline">
<input type="checkbox" value="Especial" name="edicion[]">Festivo Especial
</label>
</div>
</form>
</div>
</div>
</div>
</div>