2016-06-19 13 views
2

私はフィールド項目の一つとして、CVV番号を受け入れ、HTMLフォーム持っている - あなたが見ることができるように入力値をHTMLフォームのプレースホルダと同じにすることはできますか?

<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); 

私はプレースホルダ値と同じである123除くデータベースに任意のCVV値を入力することができますよ。私は、次のエラーを取得しておく -

Error Number: 1366 

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

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

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

Line Number: 330 

私はcvv as 123で、データベースに挿入する前に$pay配列を印刷するとき、CVVフィールドが空である -

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

しかし、私はCVVを変更した場合

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

をそのフィールドが移入されますから、私はエラーなしでデータベースにそれを入力することができるよ - 他の何かに値は、CVVフィールドが取り込まれます。フォームがフィールドのプレースホルダーと同じ値、つまりこの場合は123を受け入れない理由は何ですか?

EDIT 1

この問題は、フォーム内のすべての入力フィールドの存在のようです。私はcvvのためにそれに気づいただけだったので、私は123をテストとして入力した。したがって、入力された入力値がプレースホルダ値と同じであるすべてのフィールドが入力されていないように見えます。

EDIT 2 - 問題の原因

問題は、jQueryのソースファイルのバージョン2.0.3から発信されたように見えます。

<script src='<?php echo base_url(); ?>assets/js/jquery-2.0.3.min.js'></script> 

と私は私のプレースホルダと同じであった入力値を投稿することができました - - 私は私のコードでファイルをコメントアウト

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

を、これは編集することで解決することができるものですjQueryソースファイル?私はそのような変更を行うべきですか?他の場所で問題を引き起こす可能性のある変更を加えたくない。

+0

cvvに値を挿入してもよろしいですか?もう一度検証をチェックしてください。そして、あなたはphpMyAdminを通して123を挿入しようとしましたか?それが動作する場合は、あなたのコードに何か問題があります。 –

+0

@BenJunior私は値123をcvvに挿入していると確信しています。ローカルホストとテストサーバーで複数回チェックしました。 SQLyogに値を手動で入力することができます。コードに間違いがありますが、私は確信しています。 123以外の値を挿入できるので、PHPは問題ありません。プレースホルダが何らかの原因で競合を起こしていると思います。 –

+1

さて、プレースホルダーを '103'にして、' 123'と '103'の両方の値を試してみてください。 'maxlength'にも注意してください - CVVの長さは4桁です。 – Tpojka

答えて

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(); 
} 

私は実際にそれを解決するための正しい方法ではないとわかりますが、そのトリックを行います。

+1

それは素晴らしい仕事です。ありがとうございました!問題は、私が使用しているjQueryソースファイルのようです。私は詳細を投稿するために質問を編集します。 –

関連する問題