1

入力ボックスにある文字カウント スクリプトに問題があります。最大レベルに達すると、最初は機能する ajax 関数を呼び出しますが、この入力ボックスに 2 回目に入力すると、ajax 呼び出しとキーアップ イベントが機能しないコードは次のようになります。

HTML

<div class="row-fluid hide payment_mode_card">
 <input type="text" name="card_number" id="card_number" alt="cc" placeholder="Credit card number" class="required number xlarge span12" />
</div>

脚本

var xTriggered = 0;
$('#card_number').live('keyup',function(event) {
if (event.which == 6) {
event.preventDefault();
}
xTriggered++;

if(xTriggered == 6){
var action = "chkcard";
var cardNum = $("#card_number").val();
//alert(cardNum);
$.ajax({ 
        url: "/{$current_folder}/check_card_type.{$CONFIG.site.file.extension}",
        type: "post",
        data: { "cardNum" : cardNum, "action":action},
        success: function(debit_or_credit){
            var dataObj = JSON.parse(debit_or_credit);
            alert('This is a '+dataObj.debit_or_credit+' Card of '+dataObj.card_type+' type');

        },
        error: function(){
            alert('There is an error');
        }
    });
  }
})

そしてPHP:

if($_POST['action']=='chkcard'){
    $firstSixChr = substr($_POST['cardNum'], 0, 6);
    $debit_or_credit = Salucro_payment::GetDebitOrCredit($firstSixChr);
    /*echo "<pre>";
    print_r($debit_or_credit);

     $debit_or_credit = $debit_or_credit[debit_or_credit];
    echo $card_type = $debit_or_credit[card_type];*/

    echo json_encode( $debit_or_credit );
}

どんな助けでも大歓迎です。

4

2 に答える 2

1

これを試して...

var xTriggered = 0;
$('#card_number').on('keyup',function(event) {
    var cardNum = $(this).val();
    if (cardNum.length == 6){
    var action = "chkcard";
    $.ajax({ 
        url: "/{$current_folder}/check_card_type.{$CONFIG.site.file.extension}",
        type: "post",
        data: { "cardNum" : cardNum, "action":action},
        success: function(debit_or_credit){
            var dataObj = JSON.parse(debit_or_credit);
            alert('This is a '+dataObj.debit_or_credit+' Card of '+dataObj.card_type+' type');

        },
        error: function(){
            alert('There is an error');
        }
    });
})

以前はcardNum.lengthキープレスをカウントしていましたが、これは悪い方法です。

にも変更live()しましたon()。Live は jQuery v1.7 で廃止されました。 on()あなたが今使うべき方法です:)

于 2013-09-13T12:08:27.557 に答える
0

これを文字カウンター スクリプトとして使用し、必要に応じて AJAX を適用できます。これは、文字カウンターと入力リミッターの完璧な実例です

http://www.a100websolutions.in/character-counter-script-using-jquery/

于 2014-08-29T08:06:46.420 に答える