【问题标题】:Live table edit not only for textboxes实时表格编辑不仅适用于文本框
【发布时间】:2016-01-14 08:51:59
【问题描述】:

我的问题是关于 PHP/mysql 表的。我需要我可以在点击 html 表时更改 mysql 表中的数据。 然后我使用 Live Table Edit 来满足我的需要,并且该代码非常适合文本框输入,但是如果我想应用该代码来上传图像和单选按钮,我将无法更改 js 代码以将 var 提供给 mysql询问。我试图更好地解释。我已经:

<pre><td class="edit_td">
                    <img id="col_1_id_<?php echo $val0; ?>" class="text" src='data:image/jpg;base64,<?php echo $val1; ?>' width='60px'/>
                    <!--?php echo $val1; ?-->
                    <form enctype="multipart/form-data">
                        <input id="input_col_1_id_<?php echo $val0; ?>" type="file" 
                        style="width: 80px;"/>
                    </form>
                </td></pre>

用于上传图片和

    <pre><td class="edit_td">
                    <span id="col_13_id_<?php echo $val0; ?>" class="text"><?php echo $val13; ?></span>
                    <form id="input13" method="post" style="align:left; display:none;">
                        <input name="radio13" type="radio" value="SI"> SI
                        <br>
                        <input name="radio13" type="radio" value="NO" checked> NO
                    </form>
                </td></pre>

单选按钮是/否。 然后我想使用该 ajax/js 代码将数据发送到 mysql 查询:

$(document).ready(function(){
	$(".edit_tr").click(function(){
		var ID = $(this).attr('id');
		
		$("#col_1_id_"+ID).hide();
		$("#col_2_id_"+ID).hide();
		$("#col_3_id_"+ID).hide();
		$("#col_4_id_"+ID).hide();
		$("#col_5_id_"+ID).hide();
		$("#col_6_id_"+ID).hide();
		$("#col_8_id_"+ID).hide();
		$("#col_10_id_"+ID).hide();
		$("#col_14_id_"+ID).hide();
		
		$("#input_col_1_id_"+ID).show();
		$("#input_col_2_id_"+ID).show();
		$("#input_col_3_id_"+ID).show();
		$("#input_col_4_id_"+ID).show();
		$("#input_col_5_id_"+ID).show();
		$("#input_col_6_id_"+ID).show();
		$("#input_col_8_id_"+ID).show();
		$("#input_col_10_id_"+ID).show();
		$("#input_col_14_id_"+ID).show();
		
	}).change(function(){
		var ID = $(this).attr('id');
		
		var var1="data:image/gif;base64,"+"/9j/4AAQSk....."
		//document.getElementById("#input_col_1_id_"+ID).src;
		var var2=$("#input_col_2_id_"+ID).val();
		var var3=$("#input_col_3_id_"+ID).val();
		var var4=$("#input_col_4_id_"+ID).val();
		var var5=$("#input_col_5_id_"+ID).val();
		var var6=$("#input_col_6_id_"+ID).val();
		var var8=$("#input_col_8_id_"+ID).val();
		var var10=$("#input_col_10_id_"+ID).val();
		var var14=$("#input_col_14_id_"+ID).val();
		
		var dataString = 
			'val0='+ ID 
			+'&val1='+var1
			+'&val2='+var2
			+'&val3='+var3
			+'&val4='+var4
			+'&val5='+var5
			+'&val6='+var6
			+'&val8='+var8
			+'&val10='+var10
			+'&val14='+var14
		;
			
		$("#col_2_id_"+ID).html('<img src="./img/load.gif" />'); // Loading image

		//definiamo quali campi sono obbligatori e li inviamo a mysql
		if(
			//var1.length>0&& 
			var2.length>0
			//&&var3.length>0 
			//&&var4.length>0 
			&&var5.length>0
			&&var6.length>0 
			&&var8.length>0
			&&var10.length>0
			//&&var14.length>0
		){
			$.ajax({
				type: "POST",
				url: "query_update.php",
				data: dataString,
				cache: false,
				//visualizza a video i cambiamenti
				//vanno messi tutti i campi variabili
				success: function(html)	{
					$("#col_1_id_"+ID).html('<img src=var1 />');
					$("#col_2_id_"+ID).html(var2);
					$("#col_3_id_"+ID).html(var3);
					$("#col_4_id_"+ID).html(var4);
					$("#col_5_id_"+ID).html(var5);
					$("#col_6_id_"+ID).html(var6);
					$("#col_8_id_"+ID).html(var8);
					$("#col_10_id_"+ID).html(var10);
					$("#col_14_id_"+ID).html(var14);
				}
			});
		}else{
			alert('Immettere tutti i dati obbligatori...');
		}

	});

	// Edit input box click action
	$(".editbox").mouseup(function(){
		return false
	});

	// Outside click action
	$(document).mouseup(function(){
		$(".editbox").hide();
		$(".text").show();
	});

});

那么,我需要对该代码进行哪些更改才能使用收音机和上传 img 功能? 实在看不懂怎么修改那个js代码。

【问题讨论】:

    标签: javascript html-table live


    【解决方案1】:

    根据 XHR2,formdata 对象可以通过 AJAX 上传文件。代码修改如下

    var dataString = new FormData();
    dataString.append("userfile", $("input[type=file]")[0].files[0]);
    dataString.append("val0", ID);
    dataString.append("val2", var2);
    dataString.append("val3", var3);
    .
    .
    .
    

    但这在现代浏览器中被接受,例如 IE 10+、Firefox 4.0+、Chrome 7+、Safari 5+、Opera 12+

    【讨论】:

    • 非常感谢 Thanga 的快速回复,但我有疑问。你不认为我在 var var1="data:image/gif;base64,"+"/9j/4AAQSk....." 行有错吗?我真的不明白如何将输入文件分配给变量
    • 是的,必须删除该行。文件内容将直接使用语句dataString.append("userfile", $("input[type=file]")[0].files[0]); 赋值
    • 我已经完成了.....change(function(){ var dataString = new FormData(); dataString.append("val0", ID); dataString.append("userfile", $("input[type=file]")[0].files[0]); dataString.append("val2", var2); dataString.append("val3", var3); dataString.append("val4", var4); dataString.append("val5", var5); dataString.append("val6", var6); dataString.append("val8", var8); dataString.append("val10", var10); $("#col_2_id_"+ID).html('&lt;img src="./img/load.gif" /&gt;'); // Loading image... 但没有工作...不知道
    • 当我上传图像或更改其中一个文本框的值时,更改不会成功显示在屏幕上:function(html) {... function,粗略地说,什么都没有去mysql数据库。但是屏幕上没有出现任何消​​息,这就像变量没有得到 的值
    • 你还需要这个语句var ID = $(this).attr('id'); var var2=$("#input_col_2_id_"+ID).val(); var var3=$("#input_col_3_id_"+ID).val(); var var4=$("#input_col_4_id_"+ID).val(); var var5=$("#input_col_5_id_"+ID).val(); var var6=$("#input_col_6_id_"+ID).val(); var var8=$("#input_col_8_id_"+ID).val(); var var10=$("#input_col_10_id_"+ID).val(); var var14=$("#input_col_14_id_"+ID).val();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2022-12-04
    相关资源
    最近更新 更多