输入值是否可以与HTML表单中的占位符相同?

时间:2016-06-19 13:12:51

标签: php html mysql forms codeigniter

我有一个HTML表单,它接受CVV编号作为字段项之一 -

<label for="cvv">CVV</label>
<input type="text" placeholder="123" maxlength="3" id="cvv" name="cvv">

如您所见,它有一个placeholder="123"。我将CVV号作为数组的一部分输入我的数据库 -

$pay = array(
    'cardno' => $cardno,
    'exp' => $this->input->post('exp'),
    'cvv' => $this->input->post('cvv'),
    'name' => $this->input->post('name'),
    'org' => $this->session->userdata['user_data']['org']
    );
$this->db->insert('payment', $pay);

我可以在数据库中输入任何CVV值,123除外,它与占位符值相同。我一直收到以下错误 -

Error Number: 1366

Incorrect integer value: '' for column 'cvv' at row 1

INSERT INTO `payment` (`cardno`, `exp`, `cvv`, `name`, `org`) VALUES ('6547893210258135', '04/20', '', 'Joe Bloggs', '15')

Filename: C:\xampp\htdocs\ci_redesign_newdb\system\database\DB_driver.php

Line Number: 330

当我在将$pay数组插入数据库之前打印cvv as 123数组时,Array ( [cardno] => 6547893210258135 [exp] => 04/20 [cvv] => [name] => Joe Bloggs [org] => 15 ) ,CVV字段为空 -

Array ( [cardno] => 6547893210258135 [exp] => 04/20 [cvv] => 103 [name] => Joe Bloggs [org] => 15 )

但是,如果我将CVV值更改为其他任何值,则会填充CVV字段 -

123

由于该字段已填充,我可以将其输入数据库而不会出现任何错误。表单不接受与字段占位符相同的值的原因可能是什么,即在这种情况下为cvv

编辑1

表单中的所有输入字段似乎都存在此问题。我只注意到123因为我碰巧输入<script src='<?php echo base_url(); ?>assets/js/jquery-2.0.3.min.js'></script> 作为测试。因此,看起来输入的输入值与占位符值相同的所有字段都没有被输入。

编辑2 - 问题来源

看起来问题源于jQuery源文件版本2.0.3。我在我的代码中注释掉了该文件 -

Array ( [cardno] => 1234567890123456 [exp] => mm/yy [cvv] => 123 [name] => Name [org] => 15 )

我能够发布与我的占位符相同的输入值 -

<li><span>some value</span> <span class="sort">android</span></li>

这可以通过编辑jQuery源文件来解决吗?我应该做这样的改变吗?不想做出可能导致其他地方出现问题的更改。

1 个答案:

答案 0 :(得分:2)

这真的很奇怪。我确定你正在使用一些JavaScript代码或库来导致这种情况。

解决问题的一种可能方法是在提交输入之前删除/更改输入的占位符属性。

例如;

<form id="yourform" name="yourform">
 <input type="text" placeholder="123" id="cvv"/>
 <div class="button" onclick="submitForm()">Submit</div>
</form>

在JS中;

function submitForm(){
   document.getElementById("cvv").placeholder = "";
    //Do it for all of your input elems.

   document.yourform.submit();
}

不确定它是否会起作用,我不知道解决它的实际正确方法,但会做到这一点。