我有一个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源文件来解决吗?我应该做这样的改变吗?不想做出可能导致其他地方出现问题的更改。
答案 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();
}
不确定它是否会起作用,我不知道解决它的实际正确方法,但会做到这一点。