自动保存表单域
Posted
技术标签:
【中文标题】自动保存表单域【英文标题】:Auto Save form fields 【发布时间】:2018-04-04 10:36:30 【问题描述】:请我想实现这个:提交学生分数onblur表单输入字段这些是我的代码
Form.php
<span id="ref_report"></span><br>
Student One:<input type="text" name='ref_no[]' id='ref_no'><input type="text" name='admin'id="admin" value='st1'><br>
Students Two <input type="text" name='ref_no[]' id='ref_no'><input type="text" name='admin[]'id="admin" value='st2'><br>
Student three <input type="text" name='ref_no[]' id='ref_no'><input type="text" name='admin[]'id="admin" value='st3'><br>
//jquery
$('#ref_no').blur(function()
var query_string = $(this).val();
if(query_string.length>0)
//var filter = /^[0-9a-zA-Z_-]4,$/;
//if ( preg_match('/^[a-zA-Z0-9.,()@#!?]+$/', $string) )
var filter = /^[a-zA-Z0-9/#-]1,$/;// this allows special characters "/" and "-"
if (!(filter.test(query_string)))
$('#ref_report').html('<font color=red>This #Ref No. is not accepted</font>');
$('.login-apt').attr('disabled', 'disabled');
return false;
$.ajax(
type: 'POST',
url: "validate.php",
//data: query_string,
data: ref_no:query_string,//ref_no
success: function(data)
if(data=='exist')
$('#ref_report').html('<font color=red><b>This #Ref. Number does not exist here</b></font>');
$('.login-apt').attr('disabled', 'disabled');
else
$('#ref_report').html('<img src=yes.png><font color="Green">Accepted</font>');
$('.login-apt').removeAttr('disabled',false);
);
);
下面是我在 validat.php 中使用的 php 代码:
if(isset($_POST['ref_no']))
$ref_no = mysql_real_escape_string(trim($_POST['ref_no']));
$admin = mysql_real_escape_string(trim($_POST['admin']));
$sql = "SELECT * FROM `tbl_cms` WHERE `admin`= '$ref_no'";
$myquery = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($myquery) !=0)
$row = mysql_fetch_array($myquery);
for($i=0;$i< count($_POST['ref_no']); $i++)
$data = $_POST['ref_no'][$i];
$admin = $_POST['admin'][$i];
$sql="INSERT INTO `tbl_cms` (`admin`, `content`) values('$admin', '" . $data . "')";
mysql_query($sql);
echo 'not exist';
else
echo 'exist';
我有一个非常简单的 MySQL 表,我希望每个学生及其管理员的分数自动存储为分数的键值。它看起来像这样:
admin Content
std1 3
std2 5
std3 6
.......................................................
我的问题是代码可以工作,但只保存第一个表单字段的内容,即只保存 std1 分数。而不是保存三个学生的分数 请指导我如何完善这一点。谢谢
【问题讨论】:
您对多个输入使用相同的 id="ref_no"。尝试使用.$(".ref_no").blur(function() ...
并在每个输入 class="ref_no"
上添加类属性。请记住,id 属性为 HTML 元素指定了一个唯一的 id(该值在 HTML 文档中必须是唯一的)。
警告:如果您只是学习 PHP,请不要学习过时的 mysql_query
接口。这很糟糕,已在 PHP 7 中删除。PDO is not hard to learn 之类的替代品和PHP The Right Way 之类的指南有助于解释最佳实践。确保确保您的用户参数为properly escaped,否则您将得到严重的SQL injection bugs。
#sayonara 非常感谢,它有效,但我认为我的 validate.php 也有一些问题,请帮助检查一下
【参考方案1】:
您不能有多个具有相同值的id
属性。改用类:
Student One:<input type="text" name='ref_no[]' class='ref_no'><input type="text" name='admin' id="admin-1" value='st1'><br>
Students Two <input type="text" name='ref_no[]' class='ref_no'><input type="text" name='admin[]' id="admin-2" value='st2'><br>
Student three <input type="text" name='ref_no[]' class='ref_no'><input type="text" name='admin[]' id="admin-3" value='st3'><br>
$('.ref_no').blur(...);
注意,我还将id="admin"
更改为id="admin-1"
等。
【讨论】:
谢谢@Martin Adámek,也请检查 validate.php 代码 那里有什么问题?如果我没看错,你没有注意到除此之外的其他问题。 它没有存储学生管理员号码 [admin],我不知道为什么,而且只有一位插入的分数存储为分数 [内容] 它没有存储学生管理员号码 [admin],我不知道为什么,而且只有一位插入的分数存储为分数 [内容] 好吧,您正在尝试在 PHP 脚本中使用$_POST['admin']
,但在 JS 中发出请求时您没有传递它。以上是关于自动保存表单域的主要内容,如果未能解决你的问题,请参考以下文章