最终编辑:我放弃了尝试获取复选框以使用此方法。相反,我只是使用带有“是”和“否”的组合框。由于SE用户提供了一些出色的帮助,Combos工作得非常完美:)它实际上变得更好,IMO。带有内联编辑的复选框,我实现它的方式可能导致意外检查或取消选中框。组合是额外的2次点击,但值得消除事故。它看起来也很棒,因为我只是交换了一个红色的“x”或绿色“检查”以指示开关。看起来真的很棒。再次感谢大家的帮助!
我正在使用9lessons.info中的方法创建一个包含内联可编辑行的表。到目前为止,它在选择和复选框时工作但不是很好。使用选择时,它会更新值,但是当它隐藏输入时(在tr外部点击时),select的值显示(fk id字段),而不是所选选项标记的打开和关闭之间的文本(名称字段)。我可以在jQuery中看到它显示的值,但是如何告诉它使用选项中的文本而不是值?
jQuery:
$(document).ready(function(){
$(".edit_tr").click(function(){
var ID=$(this).attr('id');
// hide
$("#name_"+ID).hide();
$("#position_"+ID).hide();
$("#parent_nav_"+ID).hide();
$("#is_disp_"+ID).hide();
// show
$("#name_input_"+ID).show();
$("#position_input_"+ID).show();
$("#parent_nav_input_"+ID).show();
$("#is_disp_input_"+ID).show();
}).change(function(){
var ID=$(this).attr('id');
var name=$("#name_input_"+ID).val();
var position=$("#position_input_"+ID).val();
var parent_nav = $("#parent_nav_input_"+ID).val();
var is_disp = $("#is_disp_"+ID).prop("checked") ? 1 : 0;
// data string
var dataString = 'id='+ ID +'&name='+name+'&position='+position+'&parent_nav='+parent_nav+'&is_disp='+is_disp;
if(name.length > 0 && position.length > 0 && parent_nav.length > 0) {
var parent_nav_txt = $("#parent_nav_input_"+ID+" option:selected").text();
$.ajax({
type: "POST",
url: "admin_nav_edit.php",
data: dataString,
cache: false,
success: function(html) {
$("#name_"+ID).html(name);
$("#position_"+ID).html(position);
$("#parent_nav_"+ID).html(parent_nav_txt);
$("#is_disp_"+ID).html(is_disp);
}
});
} else {
alert('Enter something.');
}
});
//edit input box click action
$(".editbox").mouseup(function(){
return false
});
//outsire click action
$(document).mouseup(function() {
$(".editbox").hide();
$(".text").show();
});
});
我知道脚本中的'is_disp'变量没有检索到正确的东西,但是其他一切都有效,所以我认为我不需要发布我的其余代码,但是如果有必要,我会的。
那么,我应该放置什么才能让它识别出复选框未选中,并确保将0发送到数据库,或者如果选中则返回1?这就是我一直在做的事情
使用select,我不知道该怎么做,或者如何定位select标签之间的值而不是value =“”值,同时确保value =“”值存储在db。
非常感谢您的帮助!
答案 0 :(得分:0)
在复选框上调用.val()
将始终返回在DOM中设置的值。你应该这样做:
var is_disp = $("#is_disp_input_"+ID).is(':checked');
如果元素具有CSS选择器,则.is()
jQuery函数返回true,在本例中为:checked
。
此外,在服务器上,您应该使用if(!empty($_POST['myvar'])) {}
而不是if(isset($_POST['myvar'])) {}
检查复选框变量是真还是假,因为即使myvar为零或假,isset()
也会返回true!
答案 1 :(得分:0)
要获取选择框选项的文字,请使用:selected
选择器和.text()
var text = $("#selectID option:selected").text();
var value = $("#selectID option:selected").val();
选中复选框,检查.prop("checked")
var check = $("#checkboxID").prop("checked") ? 1: 0;
编辑:
var parent_nav_text = $("#parent_nav_input_"+ID+" option:selected").text();
然后在你的ajax函数中
$.ajax({
type: "POST",
url: "admin_nav_edit.php",
data: dataString,
cache: false,
success: function(html) {
$("#name_"+ID).html(name);
$("#position_"+ID).html(position);
$("#parent_nav_"+ID).html(parent_nav_text);
$("#is_disp_"+ID).html(is_disp);
}
});