繁体   English   中英

IE8及以下 <input type=“image”> 变通解决

[英]IE8 and below <input type=“image”> value work around

我有一个小问题,我试图将两个按钮(一个是,一个不是)的输入捕获到数据库中,但是由于某种原因,数据库并不总是显示所单击按钮的值,它只是显示为空白。

<form  action="refer.php" method="post" id="formID" >
  <div class="prompt_container" style="float: left;">
    <span class="prompt_item"><input type="image" src="images/yes.jpg"
      alt="submit" value="yes" onclick="this.disabled=true,this.form.submit();"
      /></span>
    <input type="hidden" name="refer" value="yes">
  </div>
</form>

<form action="thank_you.php" method="post" id="formID" >
  <div class="prompt_container" style="float: right;">
    <span class="prompt_item"><input type="image" src="images/no.jpg"
      alt="submit" value="no" onclick="this.disabled=true,this.form.submit();"
      /></span>
    <input type="hidden" name="refer" value="no" >
  </div>
</form>

这是将其全部写入数据库的代码

session_start();

$name = $_SESSION['name'];

$tel = $_SESSION['tel'];
$email = $_SESSION['email'];
$refer = $_POST['refer'];
$curDate = date("Y-m-d");

mysql_connect ("host", "user", "pass") or die ('Error: ' . mysql_error());
mysql_select_db ("database");

$query = "INSERT INTO Table (id, name, tel, email, refered, date)
  VALUES('NULL', '".$name."', '".$tel."', '".$email."', '".$refer."', '".$curDate."')";

mysql_query($query) or die (mysql_error()); 

显然,低于IE8的所有内容都将忽略所有<input type="image">表单输入的value属性。

我怎样才能使它在所有浏览器中正常工作? jQuery还是Javascript?

问题可能是由于在以下位置单击了坐标(1,2):

<input type="image" name="foo" value="bar"/>

IE将通过:

foo.x=1&foo.y=2

其他浏览器将通过的位置:

foo=bar&foo.x=1&foo.y=2

因此,要使图像输入能够跨浏览器工作,您需要嗅探name.x参数的存在,而不仅是name

如果您需要两个不同的图像按钮,则意味着它们将需要具有两个单独的名称,而不是依赖于可能无法解析的不同value

<input type="image" name="foo.bar"/>
<input type="image" name="foo.bof"/>

然后在服务器端检查是否存在参数foo.bar.xfoo.bof.x

[编辑:修改]

<input type="image" value="yes"/>

这行不通。 如果没有name属性,则image输入不是成功的控件,因此不会传递该value ,也可能不会传递坐标数据。

<input type="hidden" name="refer" value="yes">

无论单击哪个image ,都将提交两个隐藏的输入。 image输入的成功不会影响任何其他hidden元素的成功。

$query = "INSERT INTO Table (id, name, tel, email, refered, date) VALUES('NULL', '".$name."', '".$tel."', '".$email."', '".$refer."', '".$curDate."')";

那是相当危险的SQL注入。 您应该通过mysql_real_escape_string或参数化查询结识朋友。

为输入提供不同的名称,以检查提交的数据中是否存在name.x

我注意到您在提交表格之前禁用了输入。

如果要提交这些输入的值,则不能这样做 禁用的输入未提交

您需要做的是首先将值复制到一些隐藏的输入中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM