1

非表示のフォーム フィールドに値を挿入し、php 削除スクリプトを起動する jquery 駆動の削除確認スクリプトがあります。

echo "<a class='delete' href='#' onclick='document.delAccForm.delAcc.value = ". $row['AccountNumber']."; document.delAccForm.delMyID.value = ". $row['MyID']."; document.delAccForm.delAccID.value = ". $row['AccountID'].";'>Delete</a>";

フォームは次のようになります。

<form method="post" name="myform">
    <input type="hidden" name="AccountID" value="<?php echo $out['AccountID']; ?>" />
    <input type="hidden" name="MyID" value="<?php echo $out['PropertyID']; ?>" />
    <input type="hidden" name="formVar" value="">
</form>  

すべて正常に動作しますが、特定のエントリは削除できず、調査の結果、0 で始まるアカウント番号は 0 より大きい最初の番号に切り捨てられることがわかりました。強制的に文字列として扱うことはできますか?

私はこの形式を試しましたが、成功しませんでした。これが生成した html はかなりめちゃくちゃでした。

<a class='delete' href='#' onclick='document.delAccForm.delAcc.value = '". $row['AccountNumber']."'; document.delAccForm.delMyID.value = '". $row['MyID']."'; document.delAccForm.delAccID.value = '". $row['AccountID']."';'>Delete</a>
4

1 に答える 1

3

編集

私は今あなたの問題をよりよく理解していると思います。PHP によって作成された HTML リンクがあり、そのリンクに固有の値に基づいて非表示の HTML フォームの値を更新できるようにしたいと考えています。次に、サーバー側の処理を行うために、そのリンクがクリックされたときにフォームを送信します。フォームの値を設定するときに先頭の 0 がトリミングされているため、問題はそれを防ぐ方法です。

HTML + PHP

次のように、カスタムdata属性を使用してアンカーを構築します。

echo '<a class="delete" href="#" data-account-number="'.$row['AccountNumber'].'" data-account-id="'.$row['AccountId'].'" data-my-id="'.$row['MyId'].'">Delete</a>';

jQuery/JavaScript

次に、この jQuery を使用して、クリック リスナーをすべてのdeleteアンカーにアタッチします。attr()ではなく関数を使用していることに注意してくださいdata()data()データ型を解釈してキャストしようとします。この場合、ID を数値としてキャストし、先頭の 0 をトリミングします。を使用attrすると、文字列を確実に操作できます。

$(function() {
    $('a.delete').on('click', function(e) {
        var that = $(this);

        $('#delAcc').val(that.attr('data-account-number')); 
        $('#delMyID').val(that.attr('data-my-id')); 
        $('#delAccID').val(that.attr('data-account-id')); 

        $('form[name="myform"]').submit();
    });
});

http://api.jquery.com/jQuery.data/

http://api.jquery.com/attr/

于 2013-06-07T12:53:57.107 に答える