-1

重複の可能性:
Javascript エラーをデバッグするには?

次のように HTML フォームでテーブルを作成しました: // $usr は別のプロセスの結果です:

<form name="myForm" action="addAccessories.php"  method="post" onsubmit="return validateForm(this);">
        <table border="1" id="IT">
            <tr> 
                <th>Barcode<em>*</em></th>
                <th>Current stock</th>
            </tr>    
        <?php
           for($id=1; $id<=$usr; $id++){                   
        ?>
            <tr>                    
                <td><input type="hidden"  name="id[]" value="<?php echo $id; ?>" />
                    <input type="text"  name="bar_code<?php echo $id; ?>" id="bar_code<?php echo $id; ?>" value="" /></td>
" type="テキスト" id="説明" 値="" />
                <td><input type="text"  name="num_stock<?php echo $id; ?>" value="0" id="num_stock<?php echo $id; ?>"/></td>
        <?php
            }
        ?>
            <tr>
                <td> </td> 
                <td> <button data-theme="b" input type="submit" name="Submit" value="Submit">Add accessories</button></td>
            </tr>
        </table>
    </form>   

入力が取得され、テーブルが作成された後、検証フォーム コードを使用してそれを検証しました (検証コードとオートコンプリート コード)。

<?php
$query= "SELECT description from accessories_type ORDER BY description";
$result= mysqli_query($link, $query) or die(mysqli_error($link));
?>
<script>
$(document).ready(function() {
    for(i = 1; i < document.getElementById("IT").rows.length; i++)    {
    var availableConsoles = [
        <?php
        while($row = mysqli_fetch_array($result)){    
            echo '"' . $row['description'] . '"' . ',';
        }
        ?>
    ];
    $( "#description " ).autocomplete({
            source: availableConsoles
    });
}
});
</script>  

<script type="text/javascript">    

function validateForm(form){

var errors = [];       
var c, cs = form.elements;
var reB = /^bar_code/;
var reN = /^num_stock/;
var reD = /^[0-9]+$/;

for (var i=0;i<cs.length; i++) {
    c = cs[i];

    if (reB.test(c.name) && c.value == '') {
    errors[errors.length]= 'You must enter barcode.';
    }
    if (reN.test(c.name) && !reD.test(c.value)) {
    errors[errors.length] = 'Stock number must be a positive integer.';
    }     

if (errors.length > 0) {
    reportErrors(errors);
    return false;
}         return true;
}
}
function reportErrors(errors){
var msg = "There were some problems...\n";
for (var i = 0; i<errors.length; i++) {
    var numError = i + 1;
    msg += "\n" + numError + ". " + errors[i];
}
alert(msg);
}
</script> 

しかし、それは私が望んでいたようには機能しません。誰かが私が間違っていたことと、それを修正する方法を指摘できますか? また、一般的なjavascriptコードをデバッグする方法(「echo .... in PHP」と同様のコード実行結果を端末に出力するなど)、ご協力ありがとうございます。

4

1 に答える 1

0

私はあなたの問題を知りませんが、ここでやるべきことがいくつかあります:

それ以外の:

errors[errors.length] = "Current stock must be an integer";

行う:

errors.push("Current stock must be an integer");

最後に、@tereško が言ったようにconsole.logを呼び出し、 F12を押して確認できます。

console.log(errors);

これも:

if(isNaN(num_stock)){

これが可能です(安全のため):

if(isNaN(parseInt(num_stock))){

errorsさて、配列が生成するエラーは何ですか?

于 2012-06-10T15:21:51.040 に答える